OpenGL, GLSL, DirectX, HLSL中的矩阵存储形式
生活随笔
收集整理的這篇文章主要介紹了
OpenGL, GLSL, DirectX, HLSL中的矩阵存储形式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(原文地址:http://alvincc-tech.blogspot.com/2010/10/opengl-glsl-directx-hlsl.html)
OpenGL, GLSL, DirectX, HLSL中的矩陣存儲形式
OpenGL:? 按列存儲矩陣(column-major)。調用API形成的矩陣用來和一個列向量相乘,矩陣在左,列向量在右GLSL:? 存儲方式和OpenGL相同(column-major)
DirectX:??? 按行存儲矩陣(row-major)。調用API形成的矩陣用來和一個行向量相乘,矩陣在右,行向量在左
HLSL: 存儲方式和DirectX相反(column-major)
因此,若HLSL的矩陣也是用來右乘行向量,則應將DX API構造的矩陣做Transpose,這樣數學上HLSL會將Transpose后的矩陣視為?和DX API構造的矩陣是同一個矩陣,但是實際數值的存儲順序不同。若用來將矩陣左乘列向量,則可以不必做Transpose。
因此,一般的傳入shader的操作是原封不動的將用來存儲矩陣的array導入shader。但是如果是用的effect system里的setMatrix(), 則會先自動將矩陣由row-major改為colunn-major存儲,再將其導入shader。這種情況下則無需在導入前手動Transpose 矩陣。
轉載于:https://www.cnblogs.com/ygxsk/p/7693980.html
總結
以上是生活随笔為你收集整理的OpenGL, GLSL, DirectX, HLSL中的矩阵存储形式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NodeJS React 开发环境搭建
- 下一篇: zufeoj 分数线划定