OpenGL - ortho Projection矩阵,glViewport

时间:2010-09-01 15:58:21

标签: opengl 2d viewport projection-matrix

我无法解决这些问题。首先,在2D游戏中,投影矩阵应设置为正交,左,右,顶部,底部与窗口匹配,对吗?但是当窗口调整大小时,我应该只更改glViewport,而不是投影矩阵吗?我如何保持宽高比?

有人可以在2d拼写游戏中解释这两件事的目的,以便我能更好地理解它吗?

感觉就像OpenGL在二维设置中做了很多无用的东西。当图像已经存在时,栅格化和计算片段,将顶点坐标转换为NDC,仅通过glViewport转换回它们已经存在的位置。

另外,传统的免费OpenGL如何制作我们自己的矩阵,而不是我们自己的glViewport计算呢?

感谢。

2 个答案:

答案 0 :(得分:5)

请勿将您输入的内容与GL以及输出内容混淆。

用于计算Ortho矩阵的参数是与输入相关的参数。投影矩阵的输出始终是[-1:1] x [-1:1] x [-1:1]立方体。

视口将该立方体转换为渲染目标坐标。因此,这通常是您想要更改以匹配新窗口大小(嗯,那和帧缓冲区本身)。

是的,GL为2D渲染路径做了很多无用的事情。毕竟这是一个3D API ......

我将说完你不必构建矩阵进行2D变换,只要你的顶点着色器输出我前面提到的立方体。如果要编写视口的右上角,可以始终将顶点直接传递为(0,0)(0,1)(1,0)(1,1)并简单地输出。

答案 1 :(得分:-2)

不确定您使用OpenGL的语言是什么,但是如果您正在寻找C ++这个网站,http://nehe.gamedev.net/几乎涵盖了所有内容,并且提供了从“Hello World”到基本游戏一直都很简单的教程和3d效果。

希望有所帮助