2008-12-15 118 views
1

我試圖通過當前頁的方向:
http://www.opengl.org/resources/faq/technical/color.htm
對於渲染圖元以獨特的色彩OpenGL:不準確的顏色?

我已經籤位的數量爲每一種顏色,結果是8每個。
當調用:

glColor3ui(0x80000000, 0, 0xFF000000); 

和回讀與glReadPixels像素(),我得到的顏色:0xFFFE007F
這corresponts到R=0x7F, G=0, B=0xFE
紅色和藍色的兩個低位是錯誤的。

這是爲什麼?
我在戴爾筆記本電腦上使用全新nVidia卡,並使用最新的驅動程序

回答

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位。

3

事實證明,FAQ有一個錯誤。

documentation of glColor 指出:「無符號整數顏色分量,指定時,被線性地映射到浮點值,使得表示的最大值映射到1.0(全強度),和0映射到0.0(零強度)。」
這實際上表明,得到充分的強度白光我應該叫:

glColor3ui(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF); 

,而不是

glColor3ui(0xFF000000, 0xFF000000, 0xFF000000); 

的常見問題解答提示。
這解釋了爲什麼0xFF000000映射到254

我已經提交了一份bug報告的人理應保持FAQ