首页 > 解决方案 > SceneKit,动态加载和替换纹理的最有效方法是什么?UIImage,MTLTexture,MDLTexture,URL?

问题描述

我需要在运行时尽快加载和替换各种纹理,同时保持尽可能低的内存使用量。应尽快从 VRAM 中删除未使用的旧纹理。将所有内容重写为 Metal 可能会有所帮助,但工作量很大。

正如我们从 Apple 的文档中看到的,纹理可能是:

UIImage / NSImage / MTLTexture / MDLTexture / String / URL

那么,哪一个是最好的。我测试了其中一些,但它们在 macOS 和 iOS 上的行为不同。

标签: iosobjective-cmacosscenekitmetal

解决方案


文件路径和 URL 更好,因为它们不会为纹理数据预先分配内存。例如,在处理时UIImageCGImageRefSceneKit 无法代表您丢弃原始图像数据,这可能与 SceneKit 内部想要使用的色彩空间和/或像素格式不匹配。


推荐阅读