Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我注意到旧代码具有 glMaterialfv 的 GL_AMBIENT、GL_DIFFUSE、GL_SPECULAR 等输入。这些在现代 GLSL 代码中是如何替换的?
例如,假设一个库导入模型(Assimp)为这些颜色类别提供了直接值,它们是否仍然可以直接使用(在核心上下文中)?
是的,至少在某种程度上(当然,在现代代码中,您在着色器中处理大部分计算)。
一种典型的可能性是使用uniforms 作为环境颜色、灯光位置、眼睛位置等。然后设置几个varyings 用于将漫反射颜色和镜面反射颜色从顶点着色器传递到你的片段着色器。您的顶点着色器根据输入计算那些varyings 的值uniform。
uniform
varying
然后片段着色器接收(例如)一个纹理和varying上面提到的 s,并将它们组合在一起(以及您可能想要的任何其他输入)以生成片段的最终颜色(它分配给gl_FragColor)。
gl_FragColor