我修改與imageStore紋理的紋理像素()和後後我讀一些其他着色器sampler2D有質感()的紋理元素,但我得到它被存放在該值imageStore()之前的紋理。使用imageLoad()它工作正常,但我需要使用過濾和紋理()的性能更好,那麼有沒有辦法使用紋理()獲取修改後的數據?閱讀紋元imageStore()
編輯:
第一個片段着色器(寫入):
#version 450 core
layout (binding = 0, rgba32f) uniform image2D img;
in vec2 vs_uv_out;
void main()
{
imageStore(img, ivec2(vs_uv_out), vec4(0.0f, 0.0f, 1.0f, 1.0f));
}
第二個片段着色器(讀):
#version 450 core
layout (binding = 0) uniform sampler2D tex;
in vec2 vs_uv_out;
out vec4 out_color;
void main()
{
out_color = texture(tex, vs_uv_out);
}
那我怎麼運行的着色器:
glUseProgram(shader_programs[0]);
glBindImageTexture(0, texture, 0, GL_FALSE, 0, GL_READ_WRITE,
GL_RGBA32F);
glDrawArrays(GL_TRIANGLES, 0, 6);
glUseProgram(shader_programs[1]);
glBindTextureUnit(0, texture);
glDrawArrays(GL_TRIANGLES, 0, 6);
我做了這個簡單的應用程序來測試,因爲真正的一個非常複雜的,我首先清除紋理紅色,但紋理像素不會出現藍色的(除了在第二FRAG使用imageLoad的。着色器)。
您需要更準確地描述情況。你在哪裏寫作,你在哪裏閱讀?發佈一些代碼。 –