微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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调用就不需要更改.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。