如何将无绑定图像数组放入 ubo



我已经有一个ubo:

layout (std140, binding = 0) uniform view_shared_data {
uniform int matrixIndex;
uniform int projectionIndex;
uniform uint set_only_input_id;
uniform Matrices[MAX_MATRICES] matrices;
};

我正在尝试将一组无绑定图像添加到 ubo:

layout(bindless_image, r32ui) coherent uniform uimage2D[MAX_MATRICES] id_texture;

我只会使用 imageAtomicMax(( 写入图像。

这在使用 nvida GPU 的 Windows 上编译得很好,但在使用 amd 的 Linux 上不能编译。我假设我的bindless_image、r32ui 和相干限定符有问题,但我不确定如何正确设置它们。

如果要将无绑定图像/采样器放在统一的块中,则必须将它们实际放入块定义。就像任何其他变量一样:

layout (std140, binding = 0) uniform view_shared_data {
uniform int matrixIndex;
uniform int projectionIndex;
uniform uint set_only_input_id;
uniform Matrices[MAX_MATRICES] matrices;
layout(r32ui) coherent uimage2D[MAX_MATRICES] id_texture;
};

缓冲区支持的接口块中的每个不透明类型都是单个 64 位整数。因此,id_texture的数组步幅为 8 字节,与 64 位整数的 C 或 C++ 数组匹配。

相关内容

  • 没有找到相关文章

最新更新