Ios CoCo3D中的着色器和纹理生命周期

Ios CoCo3D中的着色器和纹理生命周期,ios,opengl-es,cocos3d,Ios,Opengl Es,Cocos3d,我不知道如何管理(自定义)着色器和纹理。我使用多个纹理和一些开箱即用的着色器以及一个自定义着色器。我真的很难让它们运行,而不是每次删除节点并将其添加到场景时都重新加载 现在,我正在努力解决以下问题: (预)加载纹理和着色器,执行一些缓存 在空场景中等待一段时间,以便进行用户交互 在屏幕上添加一些对象 该死的,还是黑屏 如果我在创建场景时立即添加对象,则该场景可以正常工作。但这不是重点,我们不要把重点放在那个场景上。我完全不知道应该在何时何地加载着色器、纹理、如何强制它们在内存中保持加载状态、如何

我不知道如何管理(自定义)着色器和纹理。我使用多个纹理和一些开箱即用的着色器以及一个自定义着色器。我真的很难让它们运行,而不是每次删除节点并将其添加到场景时都重新加载

现在,我正在努力解决以下问题:

  • (预)加载纹理和着色器,执行一些缓存
  • 在空场景中等待一段时间,以便进行用户交互
  • 在屏幕上添加一些对象
  • 该死的,还是黑屏
  • 如果我在创建场景时立即添加对象,则该场景可以正常工作。但这不是重点,我们不要把重点放在那个场景上。我完全不知道应该在何时何地加载着色器、纹理、如何强制它们在内存中保持加载状态、如何使用线程(这些步骤中的哪些可以在backgrounder中完成,哪些应该在主线程中完成)、如何使用预加载,等等。因此,问题是:

  • 何时(以及应使用哪种生命周期方法)预加载着色器
  • 如何预加载着色器和纹理以强制它们在内存中保持加载状态(以及我应该使用哪些生命周期方法)
  • 我应该如何在场景中加载着色器和纹理(我的意思是-我应该用什么方法加载)
  • 如何使用纹理和着色器缓存
  • 我应该如何为我的节点选择纹理和着色器(我应该使用哪些方法,我应该为我的自定义着色器保留引用还是可以使用着色器缓存,如果是,我应该如何以及何时为我的节点获取着色器)
  • 目前,我甚至编写了ShaderMatcher,以便它为我的节点选择我的着色器。但是在运行时的日志中,我可以看到所有着色器(包括我的自定义着色器)都已加载并释放。我完全糊涂了


    我没有使用任何模型、吊舱等,只使用生成的地形、自定义网格和参数化网格。

    我已经在Cocos3D论坛上回复了您的相同帖子