2012-11-20 77 views
0

當一個呼叫:如何在OpenGL ES 2.0中使用GL_FLOAT創建紋理?

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texWidth, texHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, rawData); 

很容易知道如何格式化數據:傳遞一個字節數組,在0-255範圍內,其中0是最低和255是亮的每個顏色分量。

當你對GL_FLOAT做同樣的事時,你傳入一個浮點數組。我的問題是,每個顏色分量值的範圍是多少? 0到1.0? 0到浮點數的最大值?

而當你使用GL_RGBA時,你會傳入一個浮點數組,每個像素有4個浮點數,是否正確?

此外,要確認:GL_HALF_FLOAT_OES不是glTexImage2D的參數,而是僅適用於verticex,對嗎?

我的iPad 3報告支持「GL_OES_texture_float」和「GL_OES_texture_half_float_linear」。這意味着我確實可以使用GL_FLOAT作爲glTexImage2D的參數,對吧?任何人都知道iPad 2是否支持這一點?

回答

3

浮點值的範圍是... the range of floating-point values。這是使用它們的一點。當您從着色器中的浮點紋理中獲取數據時,會獲得存儲在其中的浮點值。沒有夾緊裝置或任何東西。

如果您製作半浮動紋理,則它的值具有16位浮點值的範圍。如果你製作一個單精度浮點紋理,那麼它的值有一個32位浮點值的範圍。

0

我能回答這個問題的前兩個部分,而我是指你this question最後兩個部分

我的問題是,什麼是每個顏色成分值的範圍是多少? 0到1.0?

是該範圍爲0.0到1.0

[編輯] 作爲尼科爾流星錘所指出的,這是不正確的,則可以使用任何浮點值,然而,當被解釋爲一個顏色值,它會被鉗位到範圍(0.0 - 1.0)

而且當你使用GL_RGBA時,你會傳入一個浮點數組,每個像素有4個浮點數,是否正確?

是,浮體將被存儲在該順序也(紅,綠,藍,阿爾法)

+0

「然而,當它被解釋爲一個顏色值時,它將被限制在範圍內(0.0 - 1.0)」何時解釋?它由*着色器*「解釋」,並在那裏被解釋爲IEEE 754浮點值。除非您手動進行,否則不會發生任何形式的夾緊。 –