ios - 如何保留 CAMetalLayer 的支持?

标签 ios opengl-es metal

我无法找到一种方法来保留 CAMetalLayer 的支持,因为 nextDrawable 每次都从池中提供不同的 MTLTexture。即使我在渲染过程描述符上设置了适当的 loadAction 和 storeAction,也不会发生支持。内容随着 nextDrawable 调用交换纹理而闪烁。

我想要与 OpenGL ES 中的 kEAGLDrawablePropertyRetainedBacking 类似的行为。

有人想出这个吗?

最佳答案

nextDrawable 将始终为您提供未定义状态的纹理,据我所知,没有像 kEAGLDrawablePropertyRetainedBacking 这样的简单选项可以改变这种行为。

但是,显然可以通过将旧的可绘制对象保留一段时间并手动执行从前一个纹理到下一个纹理的 GPU 复制来实现复制。 https://devforums.apple.com/message/1060027#1060027

但是,您必须将 CAMetalLayer.framebufferOnly 设置为 NO,根据文档 (https://developer.apple.com/library/ios/documentation/Animation/Reference/CAMetalLayer_Ref/#//apple_ref/occ/instp/CAMetalLayer/framebufferOnly),这是“以牺牲性能为代价”

关于ios - 如何保留 CAMetalLayer 的支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34921260/

相关文章:

ios - 适用于 iPad 的交互式 3D 模型

opencv - 将 cv::Mat 转换为 MTLTexture

objective-c - 从 sqlite 数据库解析 blob

ios - indexPathForRow 不会返回正确的值

android - 纹理坐标不一致

java - 我可以使用 OpenGL-ES glBlendFunc 来影响混合以将目标考虑在内吗?

shader - 使用 SCN 技术的运动模糊

iphone - 如何在标签栏上绘制符号?

ios - 使用 NSTimer 连续向上移动 UIViews 看起来不稳定/不流畅

Android GLSL 优化