iPhone plus 系列在运行 3D 游戏以及播放 1080P 视频时也是渲染高分辨率然后 1080P 采样吗?

2018-11-28 16:20:56 +08:00
 emmm
iPhone plus 系列内部渲染成 2208*1242 分辨率然后 1080P 采样输出到 1080P 的屏幕,我想知道在全屏运行 3D 游戏和播放 1080P 视频的时候也是这么工作的吗?如果这么工作那么 1080P 视频经过插值再采样画质不就损失了吗?
8715 次点击
所在节点    iPhone
5 条回复
across
2018-11-28 16:53:34 +08:00
iPhone 硬件设计有没特殊不知道,只说个大概的概念吧。可能不太准,等后面人补充。

一个 2208*1240 的屏幕,物理像素就是这么大小,如果拿到 1920*1080 大小的图需要全屏显示,是要显示控制的底层硬件做插值计算的··· 你说画质损失嘛,插值计算后,看起来也可能更平滑柔顺了,毕竟是放大过程。 如果是 4k 的图,那这过程就是缩小的超采样计算,你屏幕本身就那么点分辨率,最后看起来当然也不可能达到 4k 的标准。

那上面说的,屏幕拿到的 1920*1080 的图怎么来的?
对游戏来说,这就是内部先创建一张对应分辨率的贴图(通过在 OpenGL、Metal 这类 API 中指定渲染输出大小),每帧更新时,在 3D 转 2D 的计算中( GPU 的活),按这个像素精度来渲染。这个分辨率对性能影响是比较明显的···

视频我不是清楚原理,大概 1080p 解码后就是 1920*1080 的图输出给屏幕硬件吧,之后还是硬件自己再做插值计算喽。
psychoo
2018-11-28 17:00:26 +08:00
视频的话,1080p 解码后(CPU/GPU?)内部 插值 /缩小 到需要显示的分辨率(在 app 里是一个小于等于屏幕分辨率的矩形区域),再送到屏幕显示,绝大多数屏幕硬件本身(非显示器)是只接收自己原生的分辨率的。
emmm
2018-11-28 17:24:56 +08:00
@across
@psychoo
iPhone plus 系列硬件比较特殊,显示屏物理分辨率是 1920*1080,但是内部渲染是渲染成 2208*1242 分辨率,然后再缩小成 1920*1080 分辨率输出给显示屏,通过手机截图生成的图片就是 2208*1242 分辨率。这么做是为了方便 UI 的开发。现在我是想知道主题中所述,在 3D 游戏和 1080P 视频播放是否也是先渲染成 2208*1024 再缩小成 1920*1080 输出给屏幕?目前已知手机全屏播放 1080P 视频时截图分辨率为 2208*1242
across
2018-11-28 18:17:13 +08:00
查了下还真是,文章里面把 2208*1242 转到实际 1920·1080 分辨率的过程叫 scaling stage,不过(调用 opengl 和 metal 的)游戏,以及视频测试表明这些任务会跳过 scaling stage。想想应该也是···不然性能损失太大。
https://www.idownloadblog.com/2014/11/20/iphone-6-downsampling-explained/
emmm
2018-11-28 19:00:11 +08:00
@across 感谢,这篇文章讲解的很详细,调用 OpenGL 或者 Apple ’ s Metal 的游戏以及全屏播放视频不会出现这种情况,这样看来全屏播放 1080P 是能够实现完美点对点的,调出 UI 界面就会 3X 采样降画质,有趣的是任何时候截图都是 2208*1242,即便是 1080P 点对点播放视频时候。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/512375

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX