gpt4 book ai didi

opengl - GLSL for 循环数组索引

转载 作者:行者123 更新时间:2023-12-04 12:55:02 40 4
gpt4 key购买 nike

我在 GLSL 中使用变量索引时遇到了一些麻烦。
以下 GLSL 代码在 NVidia 卡上运行良好。但它不适用于我的 Intel HD 4000:

for(int i=0;i<int(uLightCount);++i)
{
vec3 lightPos = uLightsPos[i];
....
}

没有着色器编译器错误。该程序只是在 glUseProgram 上崩溃了

我怎样才能解决这个问题?

编辑:
uLightCountuLightsPos是制服:
#define MAX_LIGHTS 10
uniform float uLightCount;
uniform vec3 uLightsPos[MAX_LIGHTS];

编辑 2:

我发现了一个奇怪的解决方法:
#define i0  0
#define i1 1
#define i2 2
...

for(int i=0;i<int(uLightCount);++i)
{
vec3 lightPos;

if (i==i0)
lightPos = uLightsPos[i0];
if (i==i1)
lightPos = uLightsPos[i1];
....
}

知道为什么这是有效的吗?

最佳答案

索引必须是常数。这就是您的解决方法有效的原因。

所以不可能这么写

for(int i=0;i<10;++i)
{
result += uLightsPos[i];
}

关于opengl - GLSL for 循环数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16039515/

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