下面的列表总结了各代设备中可用的 iOS 硬件。可以在 gfxbench(该平台使用基准测试来比较不同的硬件功能)上比较当前设备的着色器性能。
搭载 A5 芯片的 iPhone 4S 能够在整个屏幕上渲染复杂的着色器。甚至可以实现图像效果。然而,优化着色器仍然至关重要。但是,如果您的游戏并非试图达到设备的极限性能,在这一代设备上优化脚本和游戏运行过程所需要的时间与在 PC 上所需要的时间几乎相同。
iPad2:A5 可以进行全屏幕凹凸贴图,前提是着色器足够简单。但是,您的游戏很可能只在关键对象的凹凸贴图上发挥最佳性能。全屏图像效果仍然无法实现。脚本优化不太重要。
iPad 3 已经被证明支持渲染到纹理效果,如反射水和全屏图像效果。然而,优化着色器仍然至关重要。但是,如果您的游戏并非试图达到设备的极限性能,在这一代设备上优化脚本和游戏运行过程所需要的时间与在 PC 上所需要的时间几乎相同。
iPhone/iPad 图形处理单元 (GPU) 是基于区块的延迟渲染器。与桌面计算机中的大多数 GPU 不同,iPhone/iPad GPU 重点是尽量减少场景处理过程中提前渲染图像所需的工作量。这样一来,只有可见像素才会消耗处理资源。
GPU 的帧缓冲区划分为区块,并且逐个区块进行渲染。首先,整个帧的三角形被收集并分配到区块。然后,将选择每个三角形的可见片元。最后,选择的三角形片元传递给光栅器(从摄像机中遮挡的三角形光栅器在这个阶段被拒绝)。
换句话说,iPhone/iPad GPU 以较低成本实现了__隐藏表面消除__操作。这种架构占用较少的内存带宽,功耗较低,并且更好地利用了纹理缓存。基于区块的延迟渲染允许设备在实际光栅化之前拒绝遮挡的片元,这有助于降低过度绘制。
有关更多信息,另请参阅:
iOS 设备支持以下纹理压缩格式:
PVRTC 支持 RGB 和 RGBA(颜色信息加 Alpha 通道)纹理格式,可以将单个像素压缩为 2 位或 4 位。PVRTC 格式对于减少内存占用和减少内存带宽的消耗至关重要,例如,可以从内存中读取数据的速率,这在移动设备上通常非常有限。
ETC 将 4x4 像素块压缩为 64 位数量,但缺少 Alpha 通道。
ETC2 同时支持 1 位和 8 位 Alpha 通道压缩。
ASTC 是使用像素块大小的灵活格式。Metal 和 OpenGL ES 3.0 图形 API 支持此格式。
注意:不支持 iOS 设备上的 DXT 纹理压缩格式。
有关 iOS 中的详细纹理压缩选项,请参阅 iOS 2D 纹理覆盖。
iPhone/iPad 有一个专门负责顶点处理的单元,与光栅化并行运行计算。为了实现更高的并行效率,iPhone/iPad 比光栅器提前一帧处理顶点。
iPhone/iPad 的 CPU 和 GPU 共享相同的内存。优点是您不需要担心纹理的视频内存不足(当然,除非主内存也用完了)。缺点是游戏和图形共享相同的内存带宽。您为图形专门分配的内存带宽越多,游戏和图形的内存带宽就越少。
iPhone/iPad 主 CPU 配备了功能强大的 SIMD(单指令、多数据)协处理器,支持 VFP 或 NEON 架构。Unity iOS 运行时利用这些单元执行多个任务,如计算蒙皮网格变换、几何体批处理、音频处理和其他计算密集型操作。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.