2013-04-21 43 views

回答

5

你不說你正在使用什麼OpenGL版本。但實際上,由於您使用GLSL,你不應該護理 8位每像素數據是否在阿爾法組件或沒有。你所關心的是你的紋理數據只有一個通道,每像素8位,並且它可以被已知的組件訪問。

GL 3.X +提供了GL_R8image format。在此之前,您可以使用GL_INTENSITY8(已從核心OpenGL 3.1中刪除)。不同的是,GL_R8只將單個通道放入紅色分量,因此GB將爲0,A將爲1.強度格式將單個通道廣播到所有四個分量,因此RGBA將分別爲相同的值。

您的着色器不需要更改。只需獲取採樣值的紅色分量即可。

+0

感謝您的協助。 :) – Erkling 2013-04-29 17:37:56

+0

@尼科爾布拉斯,如果我不更改着色器代碼,仍然得到3(RGB)組件。這是否意味着着色器處理時間大約是僅對1個通道進行計算的3倍。 – user1914692 2014-12-12 17:59:14