在Direct3D中乘以矩陣以獲得結果方面,我收到了兩個相沖突的答案。教程確實從左到右繁殖,這很好,但它不是我想象它的方式。Direct3D中的矩陣mult命令
下面是一個例子:
的OpenGL(從頂部讀到底部):
GLRotatef(90.0f);
GLTranslatef(20.0f,0,0);
所以你想象的世界軸旋轉30度。然後你在現在旋轉的X軸上翻譯20.0,看起來你正在向世界Y軸上升。
在Direct3D,這樣做的:
wm = rotatem * translatem;
是不同的。它看起來像對象只是在原點旋轉,並在世界的X軸上翻譯,因此它向右而不是向上。它只有在我反轉訂單並從右向左閱讀時纔有效。
另外,例如,在frank luna的關於DX10的書中,他解釋瞭如何做鏡面反射。我得到了這一切,但是當他確實例如:
reflection_matrix = world_m * reflection_m;
圍繞xy平面,我作爲第一個解釋此做一個全球定位則反射或相反?
換句話說,我爲所有目的都做對了。那麼,我是否假設作者意在首先反思,然後應用世界矩陣? – Ilya 2011-05-25 03:23:17
我需要更多的背景來弄清楚作者的意圖。但是你提到的opengl和directx之間的轉換順序的差異是非常有意義的。 – 2011-05-25 03:26:11
作者的意圖是展示如何鏡像物體,這些物體只是立方體在任意xy平面上的反射。這是有道理的,反射將在世界轉換後執行,但這將需要矩陣順序應該是:reflection_matrix * world_matrix如果我從右向左讀。 – Ilya 2011-05-25 03:30:51