You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正交投影下如何实现类似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的单位,效果如图:
全屏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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 06:45:14