AS3 Starling 自定义着色器崩溃"Error #3600: No valid program set"计算机被锁定或进入睡眠状态



我正在使用Starling进行Flash游戏,并且我开始遇到一个问题,在我将PC放置/锁定后,我的渲染崩溃立即崩溃,然后将其转回原理在。我遇到的错误是:

错误#3600:没有有效的程序集

我无法在网上找到有关如何适当地防止此问题/重新定位所有内容的任何建议。我假设这是Flash/Starling如何处理入睡/锁定计算机的更广泛问题的一部分。

我到目前为止尝试过的事情:

  • 捕获错误并重新上传着着色器程序。
  • 将Starling.HandleStContext设置为true

以前有人遇到过这个问题吗?任何帮助/指示都将不胜感激。

听起来您的游戏正在失去GPU上下文。

在上下文损失上,所有GPU数据都丢失了。您必须还原纹理,顶点缓冲区等。八奏将在将handleLostContext设置为true时为您处理其中的一些,但是您仍然必须处理纹理。

如果您使用AssetManager,它将为您处理重新上传纹理,这显然是最简单的方法。它会自动创建一个texture.root.onRestore回调函数,该函数在重新创建上下文后starling呼叫,并将尝试从首次加载它们的任何地方,无论是从磁盘,嵌入式资产还是URL中重新加载纹理。p>您也可以自己手动定义功能,尽管这更复杂,并且正如文章所提到的那样,涉及一些陷阱。

更多信息:http://wiki.starling-framework.org/manual/context_loss

最新更新