我一直在工作于2D游戏的正确分辨率支持,并且想与大家分享一个干净的方法,确保在不同屏幕尺寸和分辨率下,Everything都能正确缩放。
这种设置将两种简单点子结合在一起:
- 独立分辨率渲染 (在一个固定的内部分辨率下渲染游戏)
- 缩放矩阵渲染 (将内部视图以干净的方式放大到实际屏幕大小)
这种方法使得支持多个分辨率变得更加容易,不用不断地为每个监视器调整游戏。
这个问题解决了什么
- 在不同分辨率下保持游戏播放与UI的一致性
- 允许你设计在一种固定的内部分辨率下(例如1280x720)
- 精确放大到1080p、1440p、超宽画幅等其他分辨率下
- 避免手动编写不同显示器下的位置和大小
- 支持以像素对齐放大或等比例放大,取决于游戏
一般方法
- 选择一个固定 虚拟分辨率 例子:1280x720
- 使用这个内部分辨率对游戏进行渲染
- 根据实际屏幕/缓冲区大小计算一个 缩放矩阵
- 使用这个矩阵进行绘制
- 将游戏播放、布局和UI保持在虚拟坐标系下,渲染端来处理缩放
这样一来,你的游戏逻辑就不再依赖于分辨率,同时也能在干净的方式下支持全屏幕、窗口调整大小和不同的画幅。
评论 (0)