OpenGL - ortho Projection矩阵,glViewport

mk1*_*k12 6 opengl 2d viewport projection-matrix

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

有人可以解释这两件事的目的,在二维正字游戏中,这样我可以更好地理解它吗?

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

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

谢谢.

Bah*_*bar 5

不要混淆您输入到GL的内容以及输出内容.

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

视口将该立方体转换为渲染目标坐标.所以这通常是你想要改变以匹配你的新窗口大小(嗯,那和帧缓冲本身).

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

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