我不知道如何管理(自定义)着色器和纹理。我使用了多个纹理和一些开箱即用的着色器以及一个自定义着色器。我真的很难让它们运行,而不是每次在场景中移除和添加节点时重新加载。
现在我正在与场景作斗争:
- (预)加载纹理和着色器,进行一些缓存
- 在空场景中等待一段时间以进行用户交互
- 将一些对象添加到屏幕
- BUM,仍然是黑屏
若在创建场景时立即添加对象,那个么场景就会工作。但这不是重点,我们不要把重点放在那个场景上。我完全不知道我应该在何时何地加载着色器、纹理、如何强制它们保持在内存中加载、我应该如何处理线程(这些步骤中的哪些可以在后台完成,哪些应该在主线程中完成)、如何使用预加载等等。所以问题是:
- 何时(以及应使用哪个生命周期方法)预加载着色器
- 如何预加载着色器和纹理以强制它们在内存中保持加载状态(以及我应该使用哪些生命周期方法)
- 稍后我应该如何在场景中加载着色器和纹理(我的意思是——我应该用哪些方法来加载)
- 我应该如何使用纹理和着色器缓存
- 我应该如何为节点选择纹理和着色器(我应该在哪些方法中这样做,我应该为自定义着色器保留引用,或者我可以使用着色器缓存吗,如果可以,我应该如何以及何时为节点获取着色器)
目前,我甚至编写了我的ShaderMatcher,这样它就可以为我的节点选择我的着色器。但在日志运行时,我可以看到所有着色器(包括我的自定义着色器)都已加载并发布。我完全糊涂了。
我没有使用任何模型、吊舱或其他东西,只使用生成的地形、自定义网格和参数化网格。
我已经在那里的Cocos3D论坛上回复了你的同一篇帖子。