正交投影下如何实现类似Unity的Camera2D缩放功能?
2D相机实现类似Unity的Size缩放功能问题
我当前使用的视图矩阵代码如下:
float left = -(float)viewPortWidth / 240, right = (float)viewPortWidth / 240, down = -(float)viewPortHeight / 240, up = (float)viewPortHeight / 240; viewMatrix = glm::ortho(left, right, down, up, -1.0f, 1.0f);
除以240是为了让全屏时显示16:9的单位,效果如图:
我有一个Camera2D类,想要实现类似Unity的Size缩放功能。之前尝试把相机挂载的游戏对象变换矩阵和viewMatrix相乘,但将游戏对象设为相机子对象时出现很多问题;还试过给left、right、down、up增加额外单位,结果导致画面拉伸。
我想要实现的缩放效果是:当缩放值为1时,画面能增加1个垂直或水平单位,请问该怎么实现?
更新1
我尝试了以下代码:
float left = -(float)(viewPortWidth + 240) / 240, right = (float)(viewPortWidth + 240) / 240, down = -(float)(viewPortHeight + 240) / 240, up = (float)(viewPortHeight + 240) / 240; viewMatrix = glm::ortho(left, right, down, up, -1.0f, 1.0f);
但画面还是存在拉伸问题。
内容的提问来源于stack exchange,提问作者Christopher Barrios Agosto
相关产品推荐
相关产品推荐

