OpenGL ES 2.0 - 有没有办法从灰度纹理中读取像素颜色?

时间:2012-06-28 12:16:38

标签: iphone ios opengl-es

我使用GL_LUMINANCE格式加载带有灰度图像的纹理。

当我在片段着色器中使用float NP = texture2D(input1, textureCoordinate).r;时程序失败。

是否可以读取像素灰度值或仅限于使用4个通道?

1 个答案:

答案 0 :(得分:0)

不确定。这是一些GL代码加载a"高度图" (灰色等级存储为float' s)。 纹理存储在单元0中。

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, textureNames[0]);
...
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE,
             heightMap.W, heightMap.H, 0,
             GL_LUMINANCE, GL_FLOAT, &heightMap.elev[0]);

以下是我的顶点着色器的相关代码。统一HeightMap为0(单位0)。

 float z = texture2D(HeightMap, TexCoord0).x * ElevScale + ElevShift;

像魅力一样。