ios - SceneKit,动态加载和替换纹理的最有效方法是什么?UIImage,MTLTexture,MDLTexture,URL?
问题描述
我需要在运行时尽快加载和替换各种纹理,同时保持尽可能低的内存使用量。应尽快从 VRAM 中删除未使用的旧纹理。将所有内容重写为 Metal 可能会有所帮助,但工作量很大。
正如我们从 Apple 的文档中看到的,纹理可能是:
UIImage / NSImage / MTLTexture / MDLTexture / String / URL
那么,哪一个是最好的。我测试了其中一些,但它们在 macOS 和 iOS 上的行为不同。
解决方案
文件路径和 URL 更好,因为它们不会为纹理数据预先分配内存。例如,在处理时UIImage
,CGImageRef
SceneKit 无法代表您丢弃原始图像数据,这可能与 SceneKit 内部想要使用的色彩空间和/或像素格式不匹配。
推荐阅读
- css - .ag-cell 菜单背景颜色(Angular)
- python - 如何在 pyspark 中创建多个滞后
- python - 如何一次将图像的组件保存到 3 个不同的文件中?
- javascript - 如何在 javascript 中从任何其他浏览器打开 Safari 浏览器?
- java - java命令行中使用'$'或'&'作为参数时的数据截断
- javascript - nodejs中的数据排序无法正常工作
- perl - 如何在 macOS Catalina 中使用 perlbrew 安装 Net::SSLeay?
- typescript - 如何引用现有 VPC 以使用 AWS CDK TYPESCRIPT 部署 Beanstalk 应用程序
- java - jfilechooser,保存多个文件,图像?
- html - 如何将图像和文本放在框内(html/css)?