HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – Sprite Kit是在后台渲染还是在主线程上渲染?它是如何工作的?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
documentation显示了Sprite Kit的简化runloop.

我试图了解他们是如何实现它的. A SKView调用-update:在SKScene.这然后首先评估动作,然后模拟物理,并让子类调整场景.在对场景进行更改后,SKView最终将节点树呈现到屏幕.

我不明白的是细节. Sprite Kit是否通过使用不同的线程或GCD队列将场景计算与场景渲染分离?它是在后台执行所有OpenGL渲染调用,还是在主线程上发生了所有事情? Sprite Kit在后台和主线程之间来回切换,以及如何同步处理场景并渲染场景呢?场景更新花费的时间过长会发生什么?

解决方法

链接文档中的饼图显示了Sprite Kit的渲染循环.循环的每个部分在主线程上同步执行. OpenGL渲染由渲染循环结束时的SKView执行.

与任何渲染循环非常相似,如果更新部分花费的时间太长,则会超出帧时间间隔.这将导致帧在下一个vsync上呈现,即帧速率降低.

渲染本身与GLKit一样执行:渲染循环使用CADisplayLink同步到显示刷新率,frameInterval属性控制每个渲染循环的显示刷新次数.模型更新完成后,GL状态随后被发送到GPU并调用[EAGLContext presentRenderbuffer:]以显示SKView渲染缓冲区.循环现在已完成,并且在显示链接触发之前不会再次启动,表示前一帧已呈现,另一帧可以发送到屏幕.

渲染是否发生在主线程之外没有记录,也不可能知道,但它只是一个实现细节.如果它确实发生在不同的线程上,则整个模型树必须在渲染线程中重复,或者足够的状态,以便可以渲染一个帧,同时为下一帧更新模型.最有可能的是它只是在主线程上同步.如果要在完成渲染之前阻止主线程访问状态,那么锁定将毫无意义,您可以在主线程上进行渲染.

大佬总结

以上是大佬教程为你收集整理的ios – Sprite Kit是在后台渲染还是在主线程上渲染?它是如何工作的?全部内容,希望文章能够帮你解决ios – Sprite Kit是在后台渲染还是在主线程上渲染?它是如何工作的?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。