2012-02-05 166 views
3

我想用正交投影渲染位於平面(z = 0)中的一些四元組。在閱讀Formula for a orthogonal projection matrix?之後,我確實設置了一個投影矩陣,但我認爲我做錯了什麼。爲什麼我的正交投影矩陣不起作用?

我的第一次嘗試是以下矩陣。 W和H分別我所需的視口的寬度和高度爲640x640在下面的例子:

˹ 2/w 0 0 0 ˺ 
| 0 2/h 0 0 | 
| 0 0 0 0 | 
˻ 0 0 0 1 ˼ 

這是我獲得當我呈現四邊形,其的左上角在(0,0,0) :

No good

由於這是垂直翻轉我改變了我的矩陣:

˹ 2/w 0 0 0 ˺ 
| 0 -2/h 0 0 | 
| 0 0 0 0 | 
˻ 0 0 0 1 ˼ 

我獲得:

better


然後我試圖走動我四,結果出乎意料。我希望3D空間的X和Y與視口的X和Y匹配。不過這裏是發生了什麼事,當我提出沿X軸四:

ouch


沿Y軸移動了同樣意想不到的結果:

ouch ouch


如何我可以修復我的矩陣,使3D空間的X軸和Y軸與視口的X軸和Y軸相匹配嗎?提前謝謝了。

回答

1

這個投影矩陣其實是正確的。問題出在四核翻譯代碼中,很抱歉搞亂了。

1

你錯過了近剪裁。試試這個

2/viewWidth 0    0    0 
0    -2/viewHeight 0    0 
0    0    1/(far-near) -near/(far-near) 
0    0    0    1