2012-09-17 2 views
0

CCSpriteBatch 노드는 visible 속성이 true로 설정된 스프라이트 만 가져 옵니까?Cocos2d : CCSpriteBatch 노드는 visible 속성이 true로 설정된 스프라이트 만 가져 옵니까?

또는 화면 크기도 고려합니까? 다른 말로. 노드 내의 스프라이트가 화면 밖에 있으면 OpenGL 그리기 호출의 성능에 반영됩니까?

+0

추신 : LearnCocos2D에서 답을 얻은 후에 좀 더 조사를 해보고 그의 대답을 확인하는 http://stackoverflow.com/questions/9502586/does-the-visible-property-affect-performance를 찾았습니다. 추가 참고 자료로 추가합니다. – mm24

답변

1

아니요 및 아니요.

CCSpriteBatchNode는 항상 모든 하위 스프라이트를 그립니다. 나는 스프라이트가 화면에 보이지 않게하는 것이 정확히 무엇인지 확신 할 수 없지만, 기술적으로는 매번 모든 쿼드를 그립니다. 또한 화면 영역도 고려하지 않습니다.

배치되지 않은 스프라이트는 다르게 동작합니다. 일괄 처리되지 않은 스프라이트가 표시되지 않으면 단순히 그려지지 않습니다. 그러나 화면 밖의 스프라이트가 그려집니다. Cocos2D는 화면/윈도우 바깥 쪽의 노드 그리기를 건너 뛰는 기능이 없습니다.

다음

내가 지난 몇 년 동안 읽은 것과, 소문, 그래서 에누리 그것을 가지고 :

여전히 보이지 않는 경우에도 성능에 부정적인 영향을

너무 많은 일괄 스프라이트 나 화면 바깥 쪽. GPU는 스크린 바깥에 완전히 보이지 않아 볼 수없는 쿼드 드로잉을 취소합니다. 아직 그 쿼드를 처리해야합니다.

이것은 cocos2d의 타일 맵 구현의 주된 문제이며 큰 타일 맵에서는 왜 그렇게 느린 지요. 내부적으로 타일 맵은 동일한 스프라이트 배치 기법을 사용합니다.

+0

그래서 제대로 이해한다면 스프라이트 시트에 있지만 SpriteBatchNode에 추가되지 않은 스프라이트는 GPU에 의해 고려되지 않습니다. 그러나 CCSpriteBatchNode에 있고 가시적이지 않은 (예를 들어, 적 캐시에 있지 않은) 스프라이트는 GPU가 해당 쿼드가 화면에 있는지 여부를 계산해야하므로 성능에 영향을 미칩니다. 이 올바른지? – mm24

+0

스프라이트가 일괄 처리되는지 또는 스프라이트가 오프 스크린인지에 관계없이 스프라이트를 그릴 필요가 없다는 것을 GPU가 결정합니다 – LearnCocos2D

관련 문제