【发布时间】:2011-06-20 00:03:44
【问题描述】:
我想在我的 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(这个我作为统一值传递给我的着色器)。
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...调用——这对我来说似乎很重要。或者,还有更好的方法? (也许矩阵乘法更少?)
我们将不胜感激有关此主题的任何帮助!感谢阅读
【问题讨论】:
标签: opengl-es matrix matrix-multiplication opengl-es-2.0