2012-08-16 29 views
0

我已經在GL_UNSIGNED_BYTE r,g,b中獲得了顏色,但是我想使用alpha通道將要在像素着色器中使用的自定義顏色以不同方式對幾何進行着色。 有兩個可能的值0和127現在我的問題是,當我做到這一點的頂點着色器:GL_UNSIGNED_BYTE

[頂]

varying float factor; 

factor = gl_Color.w 

似乎因素始終是1.0,因爲如果我這樣做:

[片段]

varying float factor; 

factor = factor; 

gl_FragColor = vec4(factor, 0.0, 0.0, 1.0) 

輸出始終是紅色的,爲什麼我會想到兩種不同的顏色,一個當係數在零和一的時候因子是127.

所以,如果我分配兩個值0和127我應該在頂點着色器0/0.5?它是否正確?好吧,我現在看到兩個不同的值,但我不知道爲什麼我得到它們,我沒有意識到GPU在gl_Colow.w組件中執行的任何操作?作爲Nicholas指出,我正在使用glColorPointer(4 ...);

+0

可能的解決方案http://stackoverflow.com/questions/4191310/what-does-gl-unsigned-byte-mean-for-glteximage2d http://www.gamedev.net/topic/260318-unsigned-char- VS-GL_UNSIGNED_BYTE / – user827992 2012-08-16 17:06:22

回答

2

由於您使用的是gl_Color輸入,並且您引用了GL_UNSIGNED_BYTE,所以我推測您正在使用glColorPointer來指定這些顏色值。因此,在你的代碼,你打電話的東西的影響:

glColorPointer(4, GL_UNSIGNED_BYTE, ...); 

(順便說一句,在未來,這將是最好的,如果你確實提供這些信息,而不是迫使我們推斷出這一點)

所以,第一個問題:你實際使用4的顏色組件的數量?你應該是,但你不會說這樣或那樣。

現在,這已得到糾正,讓我們開始真正的問題(或者至少是在問題的原始形式爲):

factor = factor/127.0;(to normalize) 

的OpenGL 已經標準化爲你。如果使用的任何整數類型與glColorPointer,您在gl_Color中獲得的值將被標準化,對於UNSIGNED類型,可以是[0,1],對於非無符號類型可以是[-1,1]。

相關問題