问题描述
我正在使用OpenGL API(v 4.6)进行一些图像处理工作,它基本上是在着色器中进行OpenGL图像加载存储操作,我通过glBindImageTexture加载Texture并进行了一些处理,然后我想使用glGetTexImage进行读取我更新的图像的内容,但是虽然函数本身可以正常工作,但它会返回全黑图像,而在其他着色器中加载时并非如此。
TLDR:将图像加载到着色器中时效果很好(我在很多方面都使用过它,而renderdoc在GPU端将其显示得很好),但它是全黑软件端。
这就是我的输出应该是using glGetTexImage(呈现后用renderdoc查看)
use_shader(&shader);
glBindBuffer (GL_ARRAY_BUFFER,quad_vbo);
setInt(shader,"screen_width",window_width);
setInt(shader,"screen_height",window_height);
glBindImageTexture(0,head_list,FALSE,GL_READ_WRITE,GL_R32UI); //head list is the opengl texture id
glDrawArrays(GL_TRIANGLES,24);
glBindVertexArray(0);
glMemoryBarrier(GL_ALL_BARRIER_BITS);
//the image is just a GL_RED so one component
GLint *image_head= (GLint*)malloc(sizeof(u32) *window_width *window_height);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D,head_list);
glGetTexImage(GL_TEXTURE_2D,GL_RED,GL_UNSIGNED_INT,image_head);
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)