【发布时间】:2017-09-24 15:25:28
【问题描述】:
我刚刚发现 OpenGL 有内置的光照,可以通过glEnable(GL_LIGHTING); 启用。为什么教程等使用使用着色器制作的自定义?一定是有原因的。内置照明更差的是什么?
【问题讨论】:
我刚刚发现 OpenGL 有内置的光照,可以通过glEnable(GL_LIGHTING); 启用。为什么教程等使用使用着色器制作的自定义?一定是有原因的。内置照明更差的是什么?
【问题讨论】:
OpenGL 有内置光照
不,它没有。所有这些都是removed from OpenGL in 3.1 and put into the compatibility profile。 不需要支持。
内置照明更糟糕的是什么?
一切。它使一切变得更糟。
固定函数光照是逐顶点的,而基于着色器的光照可以是任何你想要的:逐顶点、逐片段,等等。固定功能照明不适用于延迟渲染、照明预通道或各种其他渲染技术。固定功能照明无法处理 HDR 或伽马校正照明。
没有什么是固定功能照明可以做的,而用户定义的照明却不能。虽然用户定义的光照可以做很多固定功能做不到的事情。
现代 OpenGL 教程不教那些过时的垃圾,这很好。
【讨论】: