これを行うと、グラフィック出力が完全にめちゃくちゃになりますが、好奇心から試してみました。違法な数学演算のためにクラッシュすることを期待していました:
// gl_Position=Projection*Modelview*Position; <- normal, works fine
// gl_Position=Position*Modelview*Projection; <- bad output, but still runs fine
Position
はベクトル、その他は行列です。
OpenGL は列優先です。これは、行列の右側でのみベクトルを乗算できることを意味するはずです。内側の次元が一致しないため、ベクトルが列の場合、行列の左側にベクトルを乗算する数学的な方法はありません: 4x1 * 4x4
では、試してみると実際に出力が得られるのはなぜですか? OpenGLは実際にベクトル行列乗算で何をしていますか?