小编End*_*dox的帖子

使用imageStore()时出现问题(OpenGL 4.3)

我正在尝试将一些数据从计算着色器输出到纹理,但是imageStore()似乎什么都不做.这是着色器:

#version 430

layout(RGBA32F) uniform image2D image;

layout (local_size_x = 1, local_size_y = 1) in;
void main() {
    imageStore(image, ivec2(gl_GlobalInvocationID.xy), vec4(0.0f, 1.0f, 1.0f, 1.0f));
}
Run Code Online (Sandbox Code Playgroud)

和应用程序代码在这里:

GLuint tex;

glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_2D, tex);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, WIDTH, HEIGHT, 0, GL_RGBA, GL_FLOAT, 0);

glBindImageTexture(0, tex, 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_RGBA32F);
glUseProgram(program->GetName());
glUniform1i(program->GetUniformLocation("image"), 0);

glDispatchCompute(WIDTH, HEIGHT, 1);
Run Code Online (Sandbox Code Playgroud)

然后使用该纹理渲染全屏四边形,但目前它只显示来自视频内存的一些随机旧数据.知道什么可能是错的吗?

编辑:

这是我显示纹理的方式:

// This comes right after the previous block of code
glUseProgram(drawProgram->GetName());

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex);
glUniform1i(drawProgram->GetUniformLocation("sampler"), 0);

glBindVertexArray(vao);
glDrawArrays(GL_TRIANGLES, 0, 6);

glfwSwapBuffers();
Run Code Online (Sandbox Code Playgroud)

drawProgram包括:

#version …
Run Code Online (Sandbox Code Playgroud)

opengl shader textures compute-shader

3
推荐指数
1
解决办法
4298
查看次数

标签 统计

compute-shader ×1

opengl ×1

shader ×1

textures ×1