Это не имеет значения до тех пор, как вы это делаете, прежде чем начать на самом деле рисовать вещи, так как матрица камеры должна быть рассчитана, прежде чем он передается в любые рендеры. Например, с помощью спрайт-пакета вы должны обновить свою камеру в какой-то момент, прежде чем звонить spriteBatch.setProjectionMatrix(camera.combined);
, который должен прибыть перед вызовом spriteBatch.begin()
.
Когда вы это сделаете, это не повлияет на производительность. Во всяком случае, вам не нужно беспокоиться о таких вещах за каждый кадр. Ваши узкие места в процессорах почти наверняка будут там, где вы обрабатываете сотни спрайтов или частиц и перемещаете их, а затем передаете их в партию или в физическую симуляцию, если вы ее используете.
Документы для cocos3d говорят, что лучше всего использовать весь материал на основе процессора, а затем попытаться выполнить все вызовы рисования в кратчайшие сроки, чтобы максимально использовать использование центрального процессора и графического процессора. Я не знаю, какая разница, и насколько это возможно, чтобы следовать этому руководству в libgdx. Но если это поможет, то, как вы достигнете этого в libgdx, убедитесь, что ваша партия спрайтов имеет емкость, по крайней мере такую же большую, как и большинство спрайтов, которые вы когда-либо давали бы в одном фрейме (так что ей не нужно скрывать до того, как вы дойдете до звонка до end()
). И если вы делаете 3D-рисунок с помощью ModelBatch и DecalBatch, вы действительно захотите сделать это прямо перед вызовом spriteBatch.end()
и после того, как вы добавили все спрайты в пакет.
Необходимо только обновить камеру, когда она изменилась. Если ваша камера постоянно перемещается, делая обновление, каждый рендер является стандартом. перед вызовом spriteBatch.setProjectionMatrix (camera.combined); – Lestat