opengl – gluOrtho2D和glViewport

我有一个在世界坐标中定义的对象,就是以(2,3)为中心的半径为4的圆.如果我想让圆不被扭曲,在视口中完全可见,并且在视口内尽可能大,如何制定一个gluOrtho2D命令来创建一个基于上述规范的世界窗口:
glViewport(20,30,1000,500)?

我对整个视口vs世界vs屏幕等坐标感到困惑.有人可以走过我吗?我真的想得到这个的悬念.

解决方法

在您的示例中,视口是1000像素,高达500像素.因此,您需要指定具有相同宽高比(2:1)的glOrtho坐标.

你的圆圈半径是4个单位,所以你需要一个8单位高8单位宽度的视图.考虑到2:1宽高比,让16个单位宽8个单位.

中心在(2,3).所以将这些16 x 8围绕着你应该得到:

glOrtho2D (2 - 8,2 + 8,3 - 4,3 + 4);

那是:

glOrtho2D (-6,10,-1,7);

这有效地将-6的X坐标映射到视口的左边缘.然后,glViewport映射将其映射到屏幕上的实际位置.随着屏幕尺寸的变化,您必须调整glOrtho2D坐标以补偿宽高比,但只要视口为2:1,这些glOrtho2D调用就不需要更改.

相关文章

HTML5和CSS3实现3D展示商品信息的代码
利用HTML5中的Canvas绘制笑脸的代码
Html5剪切板功能的实现
如何通过HTML5触摸事件实现移动端简易进度条
Html5移动端获奖无缝滚动动画实现
关于HTML5和CSS3实现机器猫的代码