1

我的代码适用于镜面反射分量以外的所有内容。

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() 在任何时候都不会报告错误。

4

1 回答 1

1

你说:

这不是使用灯光和材料。

高光只能在有光源的情况下才能计算出来。(如果你愿意,我可以进入它背后的数学......)

来自http://en.wikipedia.org/wiki/Specular_highlight

镜面高光是在被照亮时出现在闪亮物体上的亮点。

在旁注中 D3DPT_TRIANGLELIST 在 OpenGL 代码中做了什么?这只是问题中的一个错误,还是实际上是这样工作的?

于 2012-07-30T17:00:27.453 回答