我的场景中有很多物体,我想用不同的颜色为每个物体着色。现在,我的片段着色器包含:
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数组。我无法弄清楚如何将它们传递给片段着色器或如何更改片段着色器和顶点着色器代码?
答案 0 :(得分:1)
单独为对象着色的最佳方法是为每个对象传递包含所需颜色的制服(就像使用myPMVMatrix
所做的那样)。
您可以在片段着色器中使用uniform vec4 objectColor
直接使用inf gl_FragColor
。
片段着色器看起来像:
uniform mediump vec4 myColor;\
void main (void)\
{\
gl_FragColor = myColor;\
}";
并且您传递的方式与传递myPMVMatrix
时完全相同,只需使用myColor
而不是myPMVMatrix
。