2014-02-12 55 views
1

如何確定我需要做什麼變換來填充整個窗口現代 OpenGL。舉例來說,我有一個800 x 600窗口,兩個三角形頂點的座標是從-1和1延伸的。如果沒有任何類型的變換,這些座標將填充800 x 600窗口,因爲OpenGL的座標從-1延伸到1如果我想使用標準的MVP轉換呢?我如何確定需要完成什麼才能填滿整個窗口。考慮以下代碼:使方塊填滿整個窗口

glm::mat4 projectionMatrix = glm::perspective(60.0f, 4.f/3.f, 0.1f, 100.0f); // gluPerspective equivalent for those who may not know about glm 
glm::mat4 viewMatrix = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, -5.0f));; 
glm::mat4 modelMatrix = glm::mat4(1.0f); 

具有相同的座標。我現在可以在窗戶中間的某處找到一個方形。假設我不改變投影矩陣,需要對View和Model矩陣做出什麼樣的改變?我理解矩陣數學,但不瞭解它與窗口座標本身的關係。

任何人都可以幫助我理解這一點嗎?

回答

0

對於2D元素(如HUD),我通常設置一個左側= 0,右側=寬度,底部= 0,頂部=高度的位圖矩陣,其中寬度和高度是窗口的大小。 znear = -1和zfar = 1。

然後你的矩形頂點將在0,0,寬度和高度。

這就是你想要的嗎?我不確定爲什麼要使用透視矩陣填充屏幕的矩形。

+0

我從來沒有能夠正確的工作。爲什麼不這樣做:glm :: mat4 projectionMatrix = glm :: ortho(0.f,800.f,0.f,600.f,-1.f,1.f); glm :: mat4 viewMatrix = glm :: translate(glm :: mat4(1.0f),glm :: vec3(0.0f,0.0f,0.0f));;;;;;;;;;;####################################################################### glm :: mat4 modelMatrix = glm :: mat4(1.0f)顯示上述座標的正方形?謝謝! – foobar5512