Как безопасно отделить рендеринг от обновления модели?

Разговаривая с некоторыми разработчиками игр, они предположили, что эффективный игровой движок на базе OpenGL ES не обрабатывает все в основном потоке. Это позволяет игровому движку работать лучше на устройствах с несколькими ядрами процессора.

Они сказали, что я могу отделить обновления от рендеринга. Так что, если я правильно понял, цикл запуска игрового движка может работать так:

Установите CADisplayLink, который вызываетrender метод.

render Метод отображает текущую модель мира в фоновом режиме.

render Затем метод вызываетupdate метод в основной теме.

Поэтому, пока он рендерится в фоновом режиме, он может одновременно обновлять модель мира для следующей итерации.

Для меня все это очень отвратительно. Может кто-нибудь объяснить или дать ссылку на то, как этот параллельный рендеринг + обновление модели осуществляется в реальности? Мне непонятно, как это не приведет к проблемам, потому что, если обновление модели занимает больше времени, чем рендеринг, или наоборот. Кто что ждет и когда.

Я пытаюсь понять, как это реализовано как теоретически с точки зрения высокого уровня, так и подробно.

Ответы на вопрос(2)

Ваш ответ на вопрос