image - 如何读取和写入 uint 格式的图像?
问题描述
我想从存储无符号整数的图像中读取和写入。我如何阅读和写作?读取和写入图像的标准方法是使用imageLoad/imageStore,但是当使用格式限定符 r32ui 时,编译器会出现no matching overloaded function found
.
这无法编译:
#version 450
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
layout(set = 0, binding = 0, r32ui) uniform writeonly uimage3D img;
void main() {
imageStore(img, ivec3(1,2,3), uint(4));
}
这编译得很好:
#version 450
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
layout(set = 0, binding = 0, rgba8ui) uniform writeonly uimage3D img;
void main() {
imageStore(img, ivec3(1,2,3), uvec4(4,5,6,7));
}
我尝试使用 uvec3 而不是 ivec3 来表示坐标,并使用 uvec4 来写入数据,以防我误解了格式存储的内容。使用二维图像也没有区别。
解决方案
您收到的错误消息是正确的,根本没有imageStore
采用单个无符号整数的重载版本(请参阅规范)。
因此,在使用r32ui
限定符时,您仍然需要像在第二个示例中一样传递一个 4 分量无符号向量,而是从单个值构造它:
void main()
{
imageStore(img, ivec3(1,2,3), uvec4(4));
}
推荐阅读
- flutter - Flutter - Bloc 仅在状态未扩展 Equatable 时发出状态
- netsuite - Netsuite - 项目履行时发送的工作流电子邮件 - 无法包含跟踪号
- python - Stackdriver 为什么要合并多条消息?
- powershell - 从可以 splatted 的 PowerShell 数组中复制选定的密钥
- javascript - 带有 JavaScript 的 youtube url 正则表达式
- python - 你能看看我的代码吗,我不知道它有什么问题
- reactjs - 命令未执行 npm run build in react
- python - 将代码移动到 Debian 导致“执行多个语句时使用 multi=True”错误语句
- laravel - 如何单独翻译 Carbon 的所有实例而不是 translateFormat()
- python - 避免“两个事件循环试图同时在一个通道层上接收()!” Django 频道错误