0

我的场景中有很多对象,我想用不同的颜色为每个对象着色。现在,我的片段着色器包括:

void main (void)\
{\
     gl_FragColor = vec4(0.82, 0.41, 0.12 ,1.0);\
}";

顶点着色器包括:

attribute highp vec4    myVertex;\
uniform mediump mat4    myPMVMatrix;\

void main(void)\
{\
gl_Position = myPMVMatrix * myVertex;\
}";

因此它用相同的颜色为每个对象着色。谁能告诉我如何用不同的颜色?我准备了一个由所有对象的颜色组成的二维数组。我不知道如何将它们传递给片段着色器或如何更改片段着色器和顶点着色器代码?

4

1 回答 1

1

单独为对象着色的最佳方法是为每个对象传递一个myPMVMatrix包含所需颜色的制服(就像您所做的那样)。您将uniform vec4 objectColor在片段着色器中有一个可以直接使用的 inf gl_FragColor

片段着色器看起来像:

uniform mediump vec4 myColor;\
void main (void)\
{\
     gl_FragColor = myColor;\
}";

你会像通过你的一样通过它myPMVMatrix,只是用单词myColor而不是myPMVMatrix.

于 2013-06-28T18:51:47.547 回答