2017-09-02 106 views
0

我在學習OpenGL,並且對設置頂點數據位置感到困惑。如何在OpenGL中設置對象的單位

例如, 我想繪製一個矩形大小300毫米毫米x 300毫米,據我所知,我可以假設1級的OpenGL單元= 1毫米,然後我設置這樣的頂點數據:

data = [-0.5, 0.5, # top left 
     -0.5, -0.5, # bottom left 
     0.5, 0.5, # top right 
     0.5, -0.5] # bottom right  

所以矩形大小是1 OpenGL單位或1mm(如果我沒有錯的話),然後使用模型矩陣將它縮放300。

或者,我可以將其設置是這樣的:

data = [ 0.0, 300.0, # top left 
     0.0, 0.0, # bottom left 
     300.0, 300.0, # top right 
     300.0, 0.0] # bottom right 

矩形大小爲300 OpenGL的單位或300毫米。

我不知道哪種方法是正確的。

請問您是否可以向我指出正確的方向。

謝謝

回答

1

OpenGL座標沒有「單位」。

在歸一化設備座標系(NDC)中,以原點爲中心的2X2X2框(或2X2X1)中,無論哪個片段被柵格化並結束,都是可映射到窗口座標的片段,並將寫入幀緩衝區(假設他們通過了深度測試)。你做什麼來獲取片段取決於你。

從你的問題我知道你在談論正射投影,在這種情況下檢查你的正交投影矩陣,它定義了「屏幕邊緣」的座標。因此,頂點座標的實際長度單位是投影和物理屏幕大小的函數。

我強烈建議閱讀關於從頂點座標到屏幕位置的簡單方式轉換。例如。 http://www.songho.ca/opengl/gl_transform.html,略顯過時,但很好地涵蓋了這個想法。
另請檢查http://www.songho.ca/opengl/gl_projectionmatrix.html,特別是有關正射投影的部分。它應該給你一個想法,如何構建一個具有你選擇的底部,左側,右側和頂部座標的正投影矩陣。

相關問題