例如,如果我使用如下顶点着色器:
#version 400 core
uniform mat4 projM;
uniform mat4 viewM;
uniform mat4 modelM;
in vec4 in_Position;
out vec4 pass_position_model;
void main(void) {
gl_Position = projM * viewM * modelM * in_Position;
pass_position_model = modelM * in_Position;
}
它会projM * viewM * modelM
为每个顶点进行矩阵乘法,还是足够聪明地计算一次并且在统一变量改变之前不重新计算?如果它不够“聪明”,那么除了计算 CPU 上的所有统一相关值并将它们作为统一变量发送到 GPU 之外,还有其他方法可以优化它吗?
我也对以后可以毫无问题地移植到 OpenGL ES 2.0 的解决方案感兴趣。