ios - PowerVR GPU 如何提供深度缓冲?

标签 ios graphics opengl-es powervr-sgx

iOS 设备使用 PowerVR 图形架构。 PowerVR 架构是一个 tile-based deferred rendering模型。该模型的主要优点是它不使用深度缓冲区。

但是,我可以在我的 iOS 设备上访问深度缓冲区。具体来说,我可以使用屏幕外帧缓冲区对象将深度缓冲区转换为颜色纹理并进行渲染。

如果 PowerVR 架构不使用深度缓冲区,我如何能够渲染深度缓冲区?

最佳答案

确实,基于图 block 的渲染器不需要传统的深度缓冲区即可工作。

TBR 将屏幕分成小块,并使用快速片上内存来存储临时颜色和深度来完整呈现该小块的内容。然后,当拼贴完成时,最终值将移至实际的帧缓冲区。然而,深度缓冲区中的深度值传统上是临时的,因为它们仅用作隐藏表面算法。然后在渲染图 block 后可以完全丢弃这种情况下的深度值。

这意味着有效的基于图 block 的渲染器并不需要在较慢的视频内存中使用全屏深度缓冲区,从而节省带宽和内存。

Metal API 很容易公开此功能,允许您将深度缓冲区的 storeAction 设置为“无关”值,这意味着它不会将生成的深度值备份到主内存中。

这种情况的异常(exception)是您可能需要渲染后的深度缓冲区内容(即用于延迟渲染器或作为某些使用深度值运行的算法的源)。在那种情况下,硬件必须确保深度值存储在帧缓冲区中供您使用。

关于ios - PowerVR GPU 如何提供深度缓冲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10075774/

相关文章:

ios - 为 iOS 模拟器构建,但链接到为 iOS 构建的目标文件,文件 '.../GoogleMaps' 为架构 arm64

html - iOS浏览器的区别

ios - Xamarin 中的 CGPointFromString

ios - 在 iOS 中创建标签栏导航的最佳实践是什么

java - 初始化图形变量

objective-c - NSS支持自动图形切换支持

iOS UIView 渲染到纹理——保持质量

python - Tkinter 函数自行调用

iOS 录制音频并绘制波形,如语音备忘录

android - 代表 iOS 和 Android 视频的最佳选择