如何降低 iOS 原生 GPU 的内存消耗?

  • Creator 版本: 3.8.2

  • 目标平台:iOS 原生

  • 重现方式:

目前 cocos 的 iOS 原生视图是全屏渲染的 metal layer,由于我们项目的特点,在游戏运行到中期有一半的屏幕绘制区域都是透明区域(或者说是纯色区域),因此想到这里可以有优化空间,比如透明区域剔除,不再交付给 GPU 进行绘制,因此我尝试动态修改 metal layer 的 drawableSize,但是我发现在缩小了 drawableSize 之后,发现渲染视图会突然变得模糊了,使用 xcode 自带的 metal 图层看了下发现图层整体被压缩,在展示到原始大小的 metal layer 中因为拉伸而变得模糊了,想请教大家这个问题是不是可以通过修改渲染流程来解决呢?或者是否有还有其他优化 GPU 内存的手段呢?

应该还要修改游戏里的设计尺寸吧?

嗯,感谢你的回答,我试了动态改了设计尺寸,发现在缩小尺寸的时候画面会迅速变小再撑大到正常尺寸,在放大尺寸的时候画面会突然变大再缩小到正常尺寸。感觉像是原生视图的 frame 立刻变化了,导致内部 metal layer 跟随拉伸/缩小,但是 CC 侧由于设计尺寸变化了,重新对渲染画面做了调整,这两个事件的发生存在时间差,结果导致了画面抖动,这个也是无法接受。

形变问题通过在 iOS 中对 layer 设置下面的 contentsGravity 解决了,
layer.contentsGravity = kCAGravityResizeAspect;
但是整体画面还是会有抖动问题