그것은 중요하지 않습니다만큼 당신이 실제로 어떤 렌더러에 전달되기 전에 카메라의 행렬을 계산해야하기 때문에, 물건을 그리기 시작하기 전에 당신이 그것을 할 수있다. 예를 들어, 스프라이트 배치를 사용하는 경우 spriteBatch.setProjectionMatrix(camera.combined);
을 호출하기 전에 어떤 시점에서 카메라를 업데이트해야합니다. spriteBatch.begin()
을 호출하기 전에 먼저 호출해야합니다.
이렇게하면 성능에 영향을 미치지 않습니다. 어쨌든 이런 식으로 프레임 당 한 번에 대해 걱정할 필요가 없습니다. CPU 병목 현상은 거의 확실하게 수백 개의 스프라이트 또는 파티클을 처리하고 배치를 이동 한 다음 배치를 사용하거나 물리 시뮬레이션을 사용하는 경우 물리 시뮬레이션으로 전달합니다.
cocos3d의 문서에서는 먼저 모든 CPU 기반 항목을 수행 한 다음 CPU와 GPU의 병렬 사용을 최대화하기 위해 모든 그리기 호출을 빠르게 연속해서 수행하는 것이 가장 바람직하다고 말합니다. 얼마나 차이가 있는지, 그리고 libgdx에서이 가이드 라인을 따르는 것이 가능한지는 알 수 없습니다. 그러나 이것이 도움이된다면, libgdx에서 이것을 달성하는 방법은 스프라이트 배치가 적어도 하나의 프레임에서 제공 할 수있는 대부분의 스프라이트만큼 큰 용량을 갖도록하는 것이다 (따라서 플러시 할 필요가 없다. 그 전에는 end()
으로 전화를 걸어야합니다. 그리고 ModelBatch와 DecalBatch로 3D 드로잉을 수행하는 경우 실제로는 spriteBatch.end()
을 호출하기 전에 그리고 모든 스프라이트를 이미 배치에 추가 한 후에 바로이 작업을 수행하고 싶을 것입니다.
변경된 카메라 만 업데이트하면됩니다. 카메라가 계속 움직이면 모든 렌더링을 업데이트하는 것이 표준입니다. spriteBatch.setProjectionMatrix (camera.combined)를 호출하기 전에; – Lestat