DirectX マトリックスしか扱ったことがない
OpenGL 行列に DirectX 行列数学ライブラリを使用できないという記事を読みました。
しかし、数学が一貫していれば、同じような結果が得られることも読みました。それは私をさらに混乱させるだけです。
誰でも私を啓発できますか?または、OpenGL マトリックスで DirectX 演算を使用できない場合。良いopenGLマトリックスライブラリを知っている人はいますか?
それらの違いと数学の知識を理解するための助けに感謝します。
OpenGL 行列に DirectX 行列数学ライブラリを使用できないという記事を読みました。
これは間違っています。
しかし、数学が一貫していれば、同じような結果が得られることも読みました。
唯一の違いは、OpenGL と DirectX が正規化されたデバイス座標空間に関して行う既定の仮定に関するものです。それらはわずかに異なる範囲と記号を使用します。ただし、これは、追加の「アダプター」マトリックスが事前に乗算された変換スタックに変換されるだけで、完了です。
インデックスの順序も重要かもしれませんが、最新の OpenGL では、「transpose」という名前の glUniformMatrix へのパラメーターで使用される順序を選択できます。
OpenGLのマトリックスとDirectXのマトリックスの主な違いは、それぞれ列メジャー形式と行メジャー形式であるということを明確にすることで、datenwolfのすばらしい答えに追加したいと思います。(Column-およびrow-majorは、4x4形式でそれらを書き出す方法を指します。翻訳が4番目の列に表示される場合、つまりcolumn-majorであり、row-majorの場合はその逆です。)
数学者は、列メジャーが行列を表す適切な方法であると言うでしょう。これは主に、列を視覚的に(紙の上で)操作しやすくするためです。
ただし、OpenGLの場合、仕様に従って、マトリックス全体が16要素の配列でメモリ内に連続して配置され、変換は13番目、14番目、および15番目の要素を占めます。したがって、データをどちらの行列形式にも簡単に適合させることができます。