OpenGL - ortho Projection矩阵,glViewport

我无法解决这些问题。首先,在2D游戏中,投影矩阵应设置为正交,左,右,顶部,底部与窗口匹配,对吗?但是当窗口调整大小时,我应该只更改glViewport,而不是投影矩阵吗?我如何保持纵横比? 有人可以解释这两件事的目的,在二维正字游戏中,这样我可以更好地理解它吗? 感觉就像OpenGL在2D设置中做了很多无用的东西。当图像已经存在时,栅格化和计算片段,将顶点坐标转换为NDC,仅通过glViewport转换回它们已经存在的位置。 另外,传统的免费OpenGL如何制作我们自己的矩阵,而不是我们自己的glViewport计算呢? 谢谢。     
已邀请:
不要混淆您输入到GL的内容以及输出内容。 用于计算Ortho矩阵的参数是与输入相关的参数。投影矩阵的输出始终是[-1:1] x [-1:1] x [-1:1]立方体。 视口将该立方体转换为渲染目标坐标。所以这通常是你想要改变以匹配你的新窗口大小(嗯,那和帧缓冲本身)。 是的,GL为2D渲染路径做了很多无用的事情。毕竟这是一个3D API ...... 我将说完你不需要构建矩阵来进行2D变换,只要你的顶点着色器输出我前面提到的立方体。如果要编写视口的右上角,可以始终将顶点直接传递为(0,0)(0,1)(1,0)(1,1)并输出。     
不确定您使用OpenGL的语言是什么,但是如果您正在寻找C ++这个网站,那么http://nehe.gamedev.net/几乎涵盖了所有内容,并且提供了从“Hello World”一直到教程的教程。基本游戏和3D效果。 希望能帮助到你     

要回复问题请先登录注册