在我的OpenGL ES 2.X引擎中,我在CPU端计算MVP矩阵(模型视图投影)并将其注入到顶点着色器中。
正交投影是4 * 4矩阵。当我拥有MVP时,我使用以下命令将其注入到顶点着色器中:
mMvpLoc = getUniformLocation("uMvp");
glUniformMatrix4fv(mMvpLoc, 1, false, mMvp.pointer());
mMvp是我在CPU端的矩阵4 * 4。加载程序着色器后,只能执行一次getUniformLocation。
顶点着色器的一个示例:
uniform mat4 uMvp;
attribute vec3 aPosition;
varying vec4 vColor;
void main() {
vec4 position = vec4(aPosition.xyz, 1.);
gl_Position = uMvp * position;
}
gl_Position是一个特殊的预定义变量。它必须包含顶点的位置。
片段着色器的一个示例。对于每个绘制点,必须计算最终颜色“ gl_FragColor”:
#ifdef GL_ES
precision highp float;
#endif
void main(void)
{
gl_FragColor = vColor;
}
该程序绘制一个三角形,并为每个顶点定义颜色的平滑度。
有关更好的教程,请查看此精彩的文档。