3

我想实现某种照明。我正在制作一个结构,它在顶点着色器中包含光源属性:

struct Light
{
    vec4 color;
    vec4 pos;
    ...
};

在我的应用程序中,我想要几个光源。所以我说:

uniform Light[10];

然后我怎样才能从应用程序加载这些制服?这是一个好方法还是更好:

uniform vec4 LightColor[10];
uniform vec4 LightPos[10];
...
4

1 回答 1

3

我认为您不能将结构传递给 OpenGL ES 着色器。请检查似乎证实了这一点的 SO 讨论:

将自己的结构传递给opengl es 2.0着色器

我认为使用基于 vec4 制服数组的第二个建议更安全。

于 2011-10-07T08:26:43.360 回答