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-2番目は次のようになります:ActualMatrix * ScaleMatrixそして最後は次のようになります:projectionMatrix * ActualMatrix(そしてこのImは均一な値としてシェーダーに渡されます)。
glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEW_PROJECTION_MATRIX], 1, GL_FALSE, matrix->getProjectionModelviewMatrix());
したがって、私のVertexshaderは次のようになります。
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...呼び出し-それは私にとって非常に思えます。それとももっと良い方法はありますか?(おそらく行列の乗算が少ないですか?)
このトピックに関するヘルプをいただければ幸いです。読んでくれてありがとう