gpt4 book ai didi

opengl - 统一 block 的动态数量

转载 作者:行者123 更新时间:2023-12-02 03:53:34 24 4
gpt4 key购买 nike

运行openGL 3.1,问题很简单。

来自 GLSL 站点,以下是定义统一缓冲区 block 数组的方法:

uniform BlockName
{
vec3 blockMember1, blockMember2;
float blockMember3;
} multiBlocks[3];

现在,是否可以拥有这些多 block 的动态数量? GLSL 中没有指针,因此没有"new"语句等。

如果没有,是否有其他方法来发送动态数量的元素?我的 block 当前正在包装 4 个 float 和 1 个 vec2。

我还没有编写着色器,所以你可以提出任何建议,谢谢;)

最佳答案

您不能拥有它们的动态数量,也不能拥有它们的动态索引。这意味着即使您可以动态更改计数,它也没什么用,因为您仍然需要更改着色器代码才能访问新元素。

一种可能的替代方法是创建 block 成员数组:

#define BLOCK_COUNT %d

uniform BlockName
{
vec3 blockMember1[BLOCK_COUNT];
vec3 blockMember2[BLOCK_COUNT];
float blockMember3[BLOCK_COUNT];
}
multiBlocks;

然后您可以更改 BLOCK_COUNT 来更改成员数量,并且可以使用动态索引:

multiBlocks.blockMember2[i];

不过,它仍然不允许您在不重新编译着色器的情况下更改元素数量。

关于opengl - 统一 block 的动态数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4708603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com