现代OpenGL颜色

时间:2010-09-05 22:31:28

标签: opengl opengl-3

我注意到旧代码有gl_AMBIENT,GL_DIFFUSE,GL_SPECULAR等输入glMaterialfv。如何在现代GLSL代码中替换它们?

e.g。假设库导入模型(Assimp)为这些颜色类别提供了直接值,它们是否仍然可以直接使用(在核心上下文中)?

1 个答案:

答案 0 :(得分:2)

是的,至少有点(当然,在现代代码中,你在着色器中处理大部分计算)。

一种典型的可能性是使用uniform s作为环境颜色,光线位置,眼睛位置等。然后设置一些将使用的varying s将顶点着色器中的漫反射颜色和镜面反射颜色传递到片段着色器。您的顶点着色器会根据varying输入计算uniform个值的值。

片段着色器然后接收(例如)纹理和上面提到的varying,并将它们组合在一起(以及您可能想要的任何其他输入)以产生片段的最终颜色(它分配给gl_FragColor)。