首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenGL着色器内省/图像接口查询

OpenGL着色器内省/图像接口查询
EN

Computer Graphics用户
提问于 2020-07-26 02:20:50
回答 1查看 110关注 0票数 0

我一直在研究接口查询,以防止用于调试的常见错误,例如忘记绑定缓冲区、绑定错误的资源类型等。

然而,我无法找到我想要的图像。我想确保纹理的类型、内存限定符和纹理格式在c++代码和着色器中是相同的:

代码语言:javascript
运行
复制
glBindImageTexture(index, texture, 0, true, 0, GL_READ_ONLY, GL_RGBA32F);

layout(binding = 0, rgba32f) uniform writeonly iimage2D _heightmap;

使用glGetProgramResourceiv和GL_UNIFORM和GL_TYPE,我能够得到图像的类型iimage2D。但是没有内存限定符和图像格式。

除了解析着色器之外,还有其他方法吗?

EN

回答 1

Computer Graphics用户

回答已采纳

发布于 2020-07-26 14:07:38

这些都是无法通过内省获得的。还应该指出的是,其中一些不需要“匹配”。

着色器定义的格式不必与图像绑定格式相同。图像绑定格式定义了如何从图像写入解释由着色器提供的数据。着色器定义的格式决定如何读取图像中的数据。因此,这两个值从根本上说是在做不同的事情,不需要相互匹配,也不需要匹配纹理的内部格式。有这些转换与图像实际格式之间的转换规则

对于访问类型,您可以通过GL_READ_WRITE获取所有信息,让着色器决定如何访问存储空间。考虑到Vulkan没有这个值,从性能上看,这可能并不重要。另外,请注意,在一个调用中绑定多个映像的多绑定函数glBindImageTextures总是使用GL_READ_WRITE (并且没有指定的格式)。由于该函数的全部功能是性能,所以如果始终使用绑定侧的读-写,几乎可以肯定地说,这并不重要。

票数 1
EN
页面原文内容由Computer Graphics提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://computergraphics.stackexchange.com/questions/10058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档