查看: 1987|回复: 4

关于平行投影随窗口变形如何解决?

[复制链接]

该用户从未签到

发表于 2009-8-14 16:35:31 | 显示全部楼层 |阅读模式
我用了osg::Matrixtransform 和osg::projection 来显示一个hud

结果窗口大小发生变化之后,hud的相对位置和形状会发生改变,我想这应该是投影矩阵没做一定的变化..
请问这个时候该如何解决?

该用户从未签到

发表于 2009-8-14 17:06:40 | 显示全部楼层
显示HUD用得着那么复杂么???你可以尝试修改设置一下透视投影试试~~~~~

该用户从未签到

 楼主| 发表于 2009-8-14 17:39:14 | 显示全部楼层
2# FlySky
我想保持HUD在窗口中位置和形状.使得在窗口大小改变后不会变形且位置发生变化

该用户从未签到

 楼主| 发表于 2009-8-14 19:30:52 | 显示全部楼层
好像是我想复杂了....

该用户从未签到

发表于 2009-8-15 13:40:28 | 显示全部楼层
保持HUD元素的形状: 可以检测视口大小变化,在视口长宽比发生变化时重设HUD相机的投影矩阵,一般是设置投影矩阵的长宽比与视口的长宽比相同(这样不会有拉伸)

保持HUD元素在视口中的位置: 这个情况要复杂一些,HUD元素是以视口左下角点为坐标原点的,因此视口大小变化时,HUD元素的相对视口左下角的位置是不会发生改变的;但如果你把它放在视口右上角或居中等位置上,那么它的相对位置就会发生变化,解决这个问题的方法,我一般也是在每帧更新的时候去检测视口大小,如果发生变化,则根据新的视口大小重算HUD元素相对视口的位置。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表