我想在我的 openGL 2.0 应用程序中使用固定函数方法,如 glTranslate()、glRotate()、glScale()。我知道,我需要实现一个矩阵类——并且已经做到了。我现在的问题是关于效率。为了能够使用类似的东西:
glLoadIdentity();
glRotatef(2.0f, 0.0f, 0.0f, 1.0f);
glScalef(2.0f, 2.0f, 2.0f);
我想,我需要做至少 3 次矩阵乘法(假设我们有一个投影和一个模型视图矩阵化,这是用于模型视图)。第一个是:Identity-Matrix*Rotation-Matrix - 第二个是:ActualMatrix*ScaleMatrix,最后一个是:projectionMatrix*ActualMatrix(并且这个 Im 作为统一值传递给我的着色器)。
glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEW_PROJECTION_MATRIX], 1, GL_FALSE, matrix->getProjectionModelviewMatrix());
所以我的顶点着色器看起来像:
attribute vec4 position;
attribute vec4 color;
varying vec4 colorVarying;
uniform mat4 modelViewProjectionMatrix;
void main()
{
gl_Position = modelViewProjectionMatrix * position;
colorVarying = color;
}
在 OpenGL ES 1.1 中是否以同样的方式完成?看起来,我需要一个矩阵乘法:glRotate、glScale、glTranslate...调用——这对我来说似乎很重要。或者,还有更好的方法?(也许矩阵乘法较少?)
对此主题的任何帮助将不胜感激!感谢您阅读