我在Android上使用OpenGL ES 2.0,我编写了一个使用texture2d
获取图像RGB值的样本着色器。
vec4 v1 = texture2D(sTexture,textCoord);
float r = v1.r;
那么r
的值是[0.0, 1.0]
还是[0.0 255.0]
?
答案 0 :(得分:2)
OpenGL ES 2.0仅支持具有标准化值的纹理,这意味着纹理采样操作返回的浮点值在[0.0,1.0]范围内。
这意味着原始整数值除以范围支持的最大值。例如,对于8位值,原始值除以255.0,对于5位值,除以31.0等。
具有更多功能内容的OpenGL版本通常具有不适用的纹理类型。它们可以具有整数类型纹理,您可以在着色器中对其进行采样时获得原始整数值,或浮动包含各种精度/范围的浮动的纹理。但ES 2.0中不支持这些类型。