2016-10-17 77 views
0

我想在現代opengl中呈現一系列2D形狀(矩形,圓形)等,希望不使用任何變換矩陣。我想對我來說,能夠指定發言權座標的2個三角形,像這樣一個矩形:與現代Opengl的2D形狀座標

float V[] = { 20.0, 20.0, 0.0, 
       40.0, 20.0, 0.0, 
       40.0, 40.0, 0.0, 
       40.0, 40.0, 0.0, 
       20.0, 40.0, 0.0, 
       20.0, 20.0, 0.0 } 

你可以看到,頂點座標在視口中規定?空間(我相信那就是它所稱的)。現在,當它由opengl渲染時,它不起作用,因爲剪輯空間從-1.0到1.0,原點位於中心。

對我來說,正確的方法是什麼?我最初認爲調整glClipControl左上角和0到1會工作,但它沒有。使用剪輯控件設置爲左上角和0到1,原點仍位於中心,但確實允許Y軸隨着向下移動而增加(這是一個開始)。

理想情況下,我很樂意讓opengl擁有0.0,0.0左上角和1.0,1.0右下角,然後我只是標準化每個頂點位置,但我不知道如何讓opengl使用該類型的座標系。

+0

我想你想的正交視角。 – CoffeeandCode

+0

那麼沒有辦法打敗OpenGL成爲我的方式嗎? – user1435899

+0

那麼,爲什麼你想避免矩陣? – CoffeeandCode

回答

0

人們可以很容易做這些轉變,而不在頂點着色器矩陣:

// From pixels to 0-1 
vPos.xy /= vResolution.xy; 

// Flip Y so that 0 is top 
vPos.y = (1.-vPos.y); 

// Map to NDC -1,+1 
vPos.xy = vPos.xy*2.-1.; 
+0

這樣做,謝謝! – user1435899