我正在尝试向着色器发送一些32位浮点数据,但结果不稳定。如果我用全白(1,1,1,1)进行测试,则值均为零。这是我创建纹理的代码:
gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGBA32F_ARB, 512, 512, 0, GL.GL_RGBA, GL.GL_FLOAT, data);
并在GLSL中阅读:
uniform sampler2D u_tex1;
varying vec2 v_uv;
void main()
{
gl_FragColor = texture2D(u_tex1, v_uv);
}
如果我将纹理设置为随机值,则显示某些内容,但它不正确。这是从RGBA32F纹理读取的正确方法还是我遗漏了什么?
答案 0 :(得分:0)
您没有提供有关您所做事情的详细信息<你展示的代码是正确的。
我能想到的一些事情可能是错误的:
data
没有正确的数据(那里有漂浮物吗?)u_tex1
的纹理单元(因此您可能无法从中获取)。 GL_CLAMP_TO_EDGE
或GL_REPEAT
不进行交互带纹理边框)有很多方法可以让纹理工作,我希望我在这个列表中找到正确的方法!