着色器和纹理生命周期在cocos3d

时间:2014-09-09 08:38:55

标签: ios opengl-es cocos3d

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

现在我正在努力解决问题:

  1. (pre)加载纹理和着色器,进行一些缓存。
  2. 等待一段时间与空场景进行用户交互
  3. 向屏幕添加一些对象。
  4. BUM,仍然是黑屏
  5. 如果我在创建场景时立即添加对象,则场景有效。但这不是重点,让我们不要关注那种情况。我完全迷失了何时何地应该加载着色器,纹理,如何强制它们保持在内存中加载,我应该如何处理线程(这些步骤中的哪一步可以在背景中完成,哪些应该在主要内容中线程),如何使用预加载等。所以问题是:

    1. 何时(以及我应该使用哪种生命周期方法)预加载着色器
    2. 如何预加载着色器和纹理以强制它们在内存中保持加载(我应该使用哪种生命周期方法)
    3. 我应该如何在场景中加载着色器和纹理(我的意思是 - 我应该采用哪种方法)
    4. 我应该如何使用纹理和着色器缓存
    5. 我应该如何为我的节点选择纹理和着色器(我应该在哪些方法中执行此操作,并且应该为自定义着色器保留参考,还是可以使用着色器缓存,如果是这样,我应该如何以及何时获取着色器我的节点)
    6. 目前我甚至编写了我的ShaderMatcher,以便它为我的节点选择我的着色器。但是在日志的运行时期间,我可以看到所有着色器(包括我的自定义着色器)都被加载和释放。我完全糊涂了。

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

1 个答案:

答案 0 :(得分:0)

我已经回复了你在Cocos3D论坛there上的同一篇文章。