我正在尝试按照此页面上的说明操作:
http://www.opengl.org/resources/faq/technical/color.htm
关于渲染具有唯一颜色的图元
我检查了每种颜色的位数,每个颜色的结果为8 致电:
glColor3ui(0x80000000, 0, 0xFF000000);
用glReadPixels()读回像素我得到颜色:0xFFFE007F
这对应于R=0x7F, G=0, B=0xFE
红色和蓝色的两个低位是错误的。
为什么?
我正在使用最新驱动程序的戴尔笔记本电脑上使用全新的nVidia卡
答案 0 :(得分:3)
事实证明,FAQ有一个错误。
documentation of glColor
声明:“无符号整数颜色分量,在指定时,线性映射到浮点值,使最大可表示值映射到1.0(全强度),0映射到0.0(零强度) “
这实际上表明要获得全强度白色我应该打电话:
glColor3ui(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
而不是
glColor3ui(0xFF000000, 0xFF000000, 0xFF000000);
如常见问题所示。
这就解释了为什么0xFF000000映射到254。
我已经向那些据称维护常见问题的人提交了一份错误报告
答案 1 :(得分:1)
你也做过这个吗?
In either event, you'll need to ensure that any state that could
affect the final color has been disabled. The following code will
accomplish this:
glDisable (GL_BLEND); glDisable (GL_DITHER);
glDisable (GL_FOG); glDisable (GL_LIGHTING);
glDisable (GL_TEXTURE_1D); glDisable (GL_TEXTURE_2D);
glDisable (GL_TEXTURE_3D); glShadeModel (GL_FLAT);
同时检查glReadPixels缓冲区是否有24/32位。