我的代码适用于除镜面反射分量以外的所有内容。
glEnable(GL_COLOR_SUM);
...
glEnableClientState(GL_COLOR_ARRAY);
glColorPointer(4, GL_UNSIGNED_BYTE, 0, color);
glEnableClientState(GL_SECONDARY_COLOR_ARRAY);
glSecondaryColorPointer(3, GL_UNSIGNED_BYTE, 0, specular);
...
glDrawArrays(D3DPT_TRIANGLELIST, 0, 2);
它似乎忽略了镜面反射,但颜色,纹理坐标,位置等都完全没问题。
这不是使用灯光和材料。固定顶点管道。不幸的是,着色器在这一点上不是一种选择。
glGetError()在任何时候都没有报告任何错误。
答案 0 :(得分:1)
这不使用灯光和材料。
只能在有光源的情况下计算镜面反射。 (如果你想我可以在它背后进行数学运算......)
来自http://en.wikipedia.org/wiki/Specular_highlight:
镜面反射高光是发光的物体在亮起时出现的亮点。
旁边注意到D3DPT_TRIANGLELIST在OpenGL代码中做了什么?这只是问题中的错误还是实际上是这样的?