我使用GL_LUMINANCE格式加载带有灰度图像的纹理。
当我在片段着色器中使用float NP = texture2D(input1, textureCoordinate).r;
时程序失败。
是否可以读取像素灰度值或仅限于使用4个通道?
答案 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;
像魅力一样。