2014-02-12 57 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