【发布时间】:2019-05-27 05:06:12
【问题描述】:
我正在为 iPhone 编写一个 Metal 应用程序。我有大量的 OpenGL 经验,所以应该不会太难吧?
错了。
我正在渲染这个 2d 矩形场景,没有进行纵横比校正 - 顶点位于 [-1,1] x [-1,1] 坐标中,所以这应该填满整个屏幕并扭曲场景以适应屏幕。
顺便说一句,这是在相对较新的 iPhone 版本 12.1.2 (16C101) 上运行的。
在横向模式下(宽度 > 高度),这是我得到的(屏幕截图):https://imgur.com/r7gJXct。屏幕的一半是空白的。
在纵向模式(高度 > 宽度)下,我得到的正是我所期望的(扭曲的正方形):https://imgur.com/ZoPoHhR。
我认为正在发生的事情是 Metal 只是渲染纵向模式,并剪辑掉屏幕外的任何内容,而不会将其“挤压”到屏幕视口。
代码只是基本的金属代码,没有配置。我采用了默认的 Metal iOS 项目,删除了 Renderer 中的代码,并按照 Hello Triangle 教程将制服发送到着色器和不同的顶点数据。
我应该如何修复这个“错误”? 它甚至是一个错误吗?
【问题讨论】:
标签: ios swift metal landscape-portrait