2011-01-27 29 views
0

我正在尋求所有與Direct3D專家的幫助。坦白說,我從HLSL的一個非常奇怪的行爲中得到了堅果。這是我指定矩陣的方式。D3D9 HLSL矩陣我的大腦

現在我的問題D3DX 9個功能:

D3DXMatrixOrthoOffCenterRH和其他...

難道他們返回在這種方式中的矩陣:V」 = V * M //列爲主

或v'= M * v //大行?

我注意到D3DXMatrixTrnaslate在列主要和我假設所有功能相同。

D3DX Project和Unproject函數現在是否採用上述函數返回的相同形式?

有沒有人經歷過HLSL矩陣乘法的瘋狂?

謝謝。

回答

0

我會保留這個簡短的內容。 RH函數返回專欄(http://en.wikipedia.org/wiki/Column_vector,供參考)矩陣,並不是HLSL(或正確優化程序集)着色器的選擇佈局,因爲它們不能執行使用點積對矢量進行3D變換。因此,在上傳到着色器常量內存之前,請使用LH或行主(V'= M * V,實際上)佈局或至少進行轉置。

對於動手實例,請參閱DirectX文檔,查找D3DXMatrixLookAtLH()和D3DXMatrixLookAtRH()。在該頁面上給出矩陣的佈局,可以比較佈局,並瞭解爲什麼用X,Y,Z,1向量對每行進行點分別對X,Y,Z和W執行仿射變換(給定你使用LH /行主矩陣)。