如何在 glsl 中索引描述符数组?

How to index arrays of descriptors in glsl?

我有缓冲区描述符数组,每个缓冲区描述符都包含一个不同结构的数组。我需要做的是单独挑选每一个并告诉里面有什么。然而,我几乎不知道 glsl 语法是如何工作的,并且在网上找不到任何东西。目前我做的是

struct myData
{
    /.../
};
layout(set = 0, binding = 0)buffer a
{
    uint count;
    myData data[];
};

//or this

layout(set = 0, binding = 0)buffer a
{
    uint count;
    myData data[];
} A[2];

//And what I want is

layout(set = 0, binding = 0, index = 0)buffer a
{
    uint countMyData;
    myData data[];
};
layout(set = 0, binding = 0, index = 1)buffer b
{
    uint countIndices;
    uint indices[];
};

I have array of buffer descriptors, and each of them holds an array of different structs.

你自相矛盾了。如果你有一些东西的数组,那么每个元素都是相同的 kind 的东西。 int 数组的每个元素可能具有不同的值,但每个数组元素都是 int.

这就是“数组”的意思。

这是 either/or 的情况。描述符数组的元素使用相同的描述符定义,或者您创建两个不同的描述符定义,具有两个不同的绑定位置,代表两个不同的描述符。

现在,排列的未调整大小的描述符对于不同的数组元素可以具有不同的大小。但是他们都将使用相同的描述符定义。