着色3D对象

时间:2013-06-28 14:29:33

标签: opengl-es colors 3d pandaboard

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

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;\
}";

因此它使用相同的颜色为每个对象着色。任何人都可以告诉我有什么不同的颜色?我准备了一个由所有对象的颜色组成的2D数组。我无法弄清楚如何将它们传递给片段着色器或如何更改片段着色器和顶点着色器代码?

1 个答案:

答案 0 :(得分:1)

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

片段着色器看起来像:

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

并且您传递的方式与传递myPMVMatrix时完全相同,只需使用myColor而不是myPMVMatrix