【问题标题】:Android OpenGL ES 2.0 shader texture2d RGB value rangeAndroid OpenGL ES 2.0 shader texture2d RGB值范围
【发布时间】:2015-07-05 08:12:31
【问题描述】:
我在 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] 范围内?
【问题讨论】:
标签:
android
opengl-es-2.0
texture2d
【解决方案1】:
OpenGL ES 2.0 仅支持具有标准化值的纹理,这意味着纹理采样操作返回的浮点值在 [0.0, 1.0] 范围内。
这意味着原始整数值除以范围支持的最大值。例如,对于 8 位值,原始值除以 255.0,对于 5 位值,它除以 31.0 等。
具有更多功能内容的 OpenGL 版本通常具有不适用的纹理类型。它们可以具有整数类型的纹理,当您在着色器中对其进行采样时,您可以获得原始整数值,或者具有包含各种精度/范围的浮点数的浮点纹理。但是 ES 2.0 不支持这些类型。