GLSL的ImageLoad()总是返回0? [英] GLSL's imageLoad() always returns 0?

查看:9
本文介绍了GLSL的ImageLoad()总是返回0?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经创建了一个纹理并填充了一些数据:

glBindTexture(GL_TEXTURE_2D, head_pointer_image);
glTexImage2D(GL_TEXTURE_2D, 0, GL_R32UI, width, height, 0, GL_RED_INTEGER, GL_UNSIGNED_INT, data);

然后我将其绑定到0:

glBindImageTexture(0, head_pointer_image, 0, GL_FALSE, 0, GL_READ_WRITE, GL_R32UI); 
glUniform1ui(0, 0); // Not sure if necessary 

如果我使用glGetTexImage()检查数据,我会得到正确的值,但如果我尝试在我的着色器中读取它,我只能得到零。

layout(binding = 0, r32ui) coherent uniform uimage2D head_pointer_image;

uint value = imageLoad(head_pointer_image, ivec2(gl_FragCoord.xy)).r;

我做错了什么?

推荐答案

我收到了外部帮助,问题是我的纹理不完整,因为默认的缩小筛选是GL_NEAREST_MIPMAP_LINEAR,它需要完整的mipmap链,而我只有基本级别的图像。

将GL_纹理_MIN_FILTER设置为GL_LINEAR解决了我的问题。

这篇关于GLSL的ImageLoad()总是返回0?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆