2011-09-25 2 views
0

타일 기반 2D 게임을 개발 중입니다. 필자는 skybackground, landbackground, town, UI 등의 구성 요소로 구성 요소를 분할하여 각 구성 요소가 그 그림을 처리하도록했습니다. 모든 그리기 호출을 호출하기 전에 기본값이 I spritebatch.Begin()이므로 모든 것을 1 일괄 처리로 그립니다.텍스처를 타일링하는보다 경제적 인 방법은 무엇입니까?

토지를 그리기 위해 필자가 채울 때까지 반복적으로 토지의 텍스쳐를 사각형으로 그린다. 그러나 spriteBatchlinear wrap이라는 모드가 있습니다. 단점은 내 구성 요소를 각 구성 요소로 여러 번 내 spritebatch.begin() 번으로 분할하여 디자인을 변경해야한다는 것입니다.

내 질문은 수동으로 텍스처를 바둑판 식으로 배열하거나 하위 구성 요소간에 begin()end()을 분할하는 것이 더 경제적/경제적 인 것입니다.

spriteBatch.Begin()을 하나 나눌 필요가있는 다른 문제가 있습니다. 그렇다면 얼마나 중요합니까? spriteBatch.Begin()? 또는 10 더? 또는 100 이상? begins()을 추가하는 것에 대해 어떤 규모로 시작해야 할지를 알고 싶습니다.

+0

질문을 3 번 읽었습니다. 1 개 이상의 spritebatch가 어떻게 도움이되는지 이해할 수 없습니다. xna에서는 무승부에서 나온 모든 것을 그려야합니다. 이 결과는 필요할 때 항상 배치를 참조로 보낼 수 있기 때문에 왜 하나 이상의 코드를 갖고 싶습니까? 일부 코드는 begin/spritebatches의 양을 1로 줄이는 데 도움이됩니다. – Olle89

답변

1

가장 좋은 해결책은 CPU 대신 GPU에서 (예 : 타일링 등을 이용하여) 많은 작업을하고 최대한 적은 SpriteBatch.Begin() 호출을 사용하는 것입니다.

최적의 해결 방법은 극한으로 치우 치지 않는 것 같습니다.

왜 SpriteBatches가 두 개뿐 아니라 토지에 대해 사용하고 다른 모든 것에 대해서도 사용하지 않는 이유는 무엇입니까?

  • 두 SpriteBatches를 모두 사용하여 어느 구성 요소를 사용하게할까요? ... 또는 ...

  • 각 구성 요소에는 필요한 SpriteBatch를 나타내는 속성이 있으며 그리기 할 때 적절한 부품을 전달합니까? 각 SpriteBatch.Begin()의 영향에 관해서는

는, 정말 내가 것 특정 게임 (이전의 SpriteBatch를 완료하고 다음을 시작하는 일이 필요 작업의 양)에 따라 달라집니다 지속적으로 테스트 및 성능 모니터링을 권장하면 언제 케어해야하는지 결정할 수 있습니다.

+0

답변을 주셔서 감사합니다, 나는 하나 이상의 spritebatch 가질 수 있다는 것을 몰랐다. – TrueGrime