Вы не можете иметь их динамическое число, и у вас не может быть динамического индекса в них.Это означает, что даже если бы вы могли динамически изменять счет, это было бы бесполезно, так как вам все равно пришлось бы менять код шейдера для доступа к новым элементам.
Одной из возможных альтернатив будет создание блокамассивы членов:
#define BLOCK_COUNT %d
uniform BlockName
{
vec3 blockMember1[BLOCK_COUNT];
vec3 blockMember2[BLOCK_COUNT];
float blockMember3[BLOCK_COUNT];
}
multiBlocks;
Затем вы можете изменить BLOCK_COUNT, чтобы изменить количество членов, и вы можете просто использовать динамические индексы:
multiBlocks.blockMember2[i];
Это все еще не позволяет вамизмените количество элементов без перекомпиляции шейдера.