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);

具有相同的坐标。我现在会在窗口中间的某个地方得到一个正方形。假设我不更改投影矩阵,需要对视图和模型矩阵进行哪些更改?我了解矩阵数学,但不了解它与窗口坐标本身的关系。

谁能帮我理解这一点?

4

1 回答 1

0

对于 2D 元素(如 HUD),我通常设置一个正交矩阵,其中 left = 0,right = width,bottom = 0,top = height,其中宽度和高度是窗口的大小。znear = -1 和 zfar = 1。

那么您的矩形顶点将位于 0、0、宽度和高度。

那是你要的吗?我不确定为什么要对填充屏幕的矩形使用透视矩阵。

于 2014-02-12T01:30:11.360 回答