2014-01-24 2 views
1

(이것은 당신에게 매우 분명있을 수 있습니다하지만 난 libGDX 및 일반 그래픽에 오히려 새로운 해요) : 그것을 경우libGDX 성능 : OrthographicCamera.update()에 대한 가장 좋은 시간 나는 그냥 빨리 간단한 질문이

libGDX의 camera.update() 메소드를 호출하는 것이 가장 좋습니까? 구체적으로, render 메소드에 [rende-method :-)로 호출해야한다는 것을 알고 있습니다.] 카메라를 업데이트하기 전이나 후에 (예 : 배치 시작) 확실히하고 싶은 것이 있습니까? 아니면 완전히 내게 달렸어? 응답에 대한

감사합니다,

토니

+0

변경된 카메라 만 업데이트하면됩니다. 카메라가 계속 움직이면 모든 렌더링을 업데이트하는 것이 표준입니다. spriteBatch.setProjectionMatrix (camera.combined)를 호출하기 전에; – Lestat

답변

3

그것은 중요하지 않습니다만큼 당신이 실제로 어떤 렌더러에 전달되기 전에 카메라의 행렬을 계산해야하기 때문에, 물건을 그리기 시작하기 전에 당신이 그것을 할 수있다. 예를 들어, 스프라이트 배치를 사용하는 경우 spriteBatch.setProjectionMatrix(camera.combined);을 호출하기 전에 어떤 시점에서 카메라를 업데이트해야합니다. spriteBatch.begin()을 호출하기 전에 먼저 호출해야합니다.

이렇게하면 성능에 영향을 미치지 않습니다. 어쨌든 이런 식으로 프레임 당 한 번에 대해 걱정할 필요가 없습니다. CPU 병목 현상은 거의 확실하게 수백 개의 스프라이트 또는 파티클을 처리하고 배치를 이동 한 다음 배치를 사용하거나 물리 시뮬레이션을 사용하는 경우 물리 시뮬레이션으로 전달합니다.

cocos3d의 문서에서는 먼저 모든 CPU 기반 항목을 수행 한 다음 CPU와 GPU의 병렬 사용을 최대화하기 위해 모든 그리기 호출을 빠르게 연속해서 수행하는 것이 가장 바람직하다고 말합니다. 얼마나 차이가 있는지, 그리고 libgdx에서이 가이드 라인을 따르는 것이 가능한지는 알 수 없습니다. 그러나 이것이 도움이된다면, libgdx에서 이것을 달성하는 방법은 스프라이트 배치가 적어도 하나의 프레임에서 제공 할 수있는 대부분의 스프라이트만큼 큰 용량을 갖도록하는 것이다 (따라서 플러시 할 필요가 없다. 그 전에는 end()으로 전화를 걸어야합니다. 그리고 ModelBatch와 DecalBatch로 3D 드로잉을 수행하는 경우 실제로는 spriteBatch.end()을 호출하기 전에 그리고 모든 스프라이트를 이미 배치에 추가 한 후에 바로이 작업을 수행하고 싶을 것입니다.

+0

고맙습니다, 저에게 많은 도움이되었습니다. – tomet