所以,我应该开始点亮我的平面彩色模特.测试应用程序是仅实现最新方法的测试用例,因此我意识到理想情况下它应该实现光线跟踪(从理论上讲,它可能是几年内实时图形的理想选择).
但是我从哪里开始呢?
假设我从未在旧的OpenGL中完成照明,所以我将直接使用不推荐的方法.
应用程序当前正确设置了顶点缓冲区对象,顶点,法线和颜色输入,并以平面颜色正确绘制和转换空间模型.
是否存在从平坦的彩色顶点到通过GLSL获得正确最终结果所需的全部信息的来源?理想情况下,可能需要任何其他额外的照明方法来补充它.
因为我读过realloc将作为malloc,如果指向的大小是0,我使用它没有malloc(),前提是指针是静态的,全局的,或者如果是自动的话显式设置为NULL.
但是,我注意到很多程序员试图设置它或将其设置为malloc(1).需要它吗?
Consider this the complete form of the question in the title: Since OpenCL may be the common standard for serious GPU programming in the future (among other devices programming), why not when programming for OpenGL - in a future-proof way - utilize all GPU operations on OpenCL? That way you get the advantages of GLSL, without its programmatic limitations.
可能重复:
为什么全局变量和静态变量初始化为默认值?
这种情况发生的技术原因是什么?所有平台的标准都支持它吗?如果未显式初始化静态变量,某些实现是否可能返回未定义的变量?
我在常规中注意到了
else
*pbuf++ = '%', *pbuf++ = to_hex(*pstr >> 4), *pbuf++ = to_hex(*pstr & 15);
Run Code Online (Sandbox Code Playgroud)
它为什么有效?
它有什么作用?
可能重复:
Linux上的C中的stdout线程安全吗?
假设thread1和thread2相似,并且在它们的作业结束时它们都是printf.它是线程安全还是必须以某种方式锁定printf?
它与stdout有关吗?如果在每个printf之后执行fflush(stdout)怎么办?它有什么改变吗?
我注意到除非我重新调用VertexAttribPointer,否则在BindBuffer之后没有输入到着色器.这有必要吗?着色器可能不会以书面形式更改,而只会使用缓冲区.
在意外关闭之后,现在git似乎工作正常,但每次运行都要求压缩,因为它找到256个松散的对象.可以清洗吗?
OpenGL的GLSL在多大程度上利用了SLI设置?它是在执行时使用还是仅用于结束渲染?
同样,我知道OpenCL与SLI不同,但假设有一个GPU,那么它与多处理中的GLSL相比如何呢?
由于它可能取决于应用程序,例如常见转换或光线跟踪,您是否可以根据应用类型提供有关差异的见解?
编写一个新的3D引擎很有吸引力,但我有很多.程序员开始一个新的是否理智?是否有需要的行业部门?