我在編輯爲RGBA紋理編寫的着色器。在GLSL着色器中混合使用RGBA和ALPHA格式的圖像
這工作與RGBA紋理預期,如:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, x, y, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
...然後在GLSL着色器,其值可與訪問。 texture2D(tex, coord);
這一切工作正常。
然而,該軟件的一個部分使用的唯一的α-紋理
(其中其format
arg是GL_ALPHA
),例如:
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA8, x, y, 0, , GL_ALPHA, GL_UNSIGNED_BYTE, NULL);
在這種情況下從texture2D()
RGB成分都爲零。
雖然這是預期的行爲,我想知道是否有某種方式之一:
- 設置只允許使用字母紋理,由
texture2D
返回RGB
值(沒有按不會破壞RGBA紋理)。 - 檢查着色器中是否有這種紋理來處理它。
注意,這可能是與預處理器來處理規定作爲最後的手段,但它已經充滿了#if
的,所以我寧可如果可能避免由於預處理器組合的數量增加數我們需要存儲的着色器。
」*然而,軟件的一部分使用僅alpha的紋理(其格式arg爲GL_ALPHA),例如:*「FYI:這不是」僅用於alpha的紋理「。 [像素傳輸格式](https://www.opengl.org/wiki/Pixel_Transfer#Pixel_format)描述了您要上傳的數據。紋理中的數據格式是[內部格式](https://www.opengl.org/wiki/Image_Format),您沒有看到。因此,對於我們所知道的,只有alpha的紋理實際上可能是RGBA紋理。 –
@ nicol-bolas,想要避免噪音*,但你的權利,更新了問題。 – ideasman42
相關問題:https://www.opengl.org/discussion_boards/showthread.php/175008-using-alpha-blending-with-shaders – ideasman42