读取GLSL中的32位RGBA浮点值

时间:2009-12-22 04:18:15

标签: java opengl textures glsl texture-mapping

我正在尝试向着色器发送一些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纹理读取的正确方法还是我遗漏了什么?

1 个答案:

答案 0 :(得分:0)

您没有提供有关您所做事情的详细信息<你展示的代码是正确的。

我能想到的一些事情可能是错误的:

  • 你的data没有正确的数据(那里有漂浮物吗?)
  • 您的纹理未正确过滤(因为您只提供1个mip级别,需要以禁用mipmapping)
  • 您的纹理未绑定到采样器u_tex1的纹理单元(因此您可能无法从中获取)。
  • 您的纹理坐标不是您认为的那样(并且,根据您的夹紧/包裹模式,这可能会导致纹理不是白色。使用GL_CLAMP_TO_EDGEGL_REPEAT不进行交互带纹理边框)

有很多方法可以让纹理工作,我希望我在这个列表中找到正确的方法!