2012-05-15 5 views
4

Canvas 요소를 사용하여 Android 게임을 개발 중입니다. 대형 게임 맵에 많은 그래픽 요소 (스프라이트)가 그려져 있습니다. 이러한 요소는 drawLine, drawPath, drawArc 등의 표준 그래픽 함수로 그려집니다.Android Canvas 오프 스크린 드로잉 성능

화면에 있는지 여부는 테스트하기가 어렵지 않습니다. 그래서, 만약 그들이 화면 밖으로, 나는 그들의 그림 루틴을 완전히 건너 뛸 수 있습니다. 그러나 이것도 CPU 비용이 있습니다. Android Graphics Library이 내가 할 수있는 것보다 빨리 이것을 할 수 있는지 궁금합니다. 한마디로

, 내가 그들을 돌봐하지 것이다 Android Graphics Library을 믿는 것은 그들을 잡아하려고 많은 CPU를 소비 좌표가 화면에서 완전히 경우에도 모든 것을 그리는 시도해야한다 또는 나는 그들의 도면 영역이 자신을 직사각형 확인해야하고 경우 그들은 완전히 화면 밖으로, 그림 루틴을 건너 뛰는가? 적절한 방법은 무엇입니까? 어느 것이 더 빨라야 하는가?

p.s : Android v2.1 이상을 타겟팅합니다.

+0

답변을 찾았습니까? 이것은 저에게 많은 일을 덜어 줄 수 있습니다 ... – bigstones

답변

4

비트 맵을 화면보다 큰 영역으로 그려서 그리지 않은 전적으로 과학적인 테스트에서, 비트 맵이 화면 상에 있는지를 미리 확인하는 것이 상당한 차이를 보이는 것 같았습니다.

하나의 테스트에서는 Rect를 화면 크기로 설정하고 다른 Rect를 비트 맵의 ​​위치로 설정하고 그리기 전에 Rect.intersects()를 선택했습니다. 다른 테스트에서는 비트 맵을 그렸습니다. 300-ish가 을 그은 후에 눈에 보이는 경향은 없었습니다 - 일부는 한 방향으로 가고, 다른 방향은 다른 방향으로갔습니다. 나는 매 프레임 당 300 회 드로우 테스트를 시도했는데, 프레임에서 프레임으로의 변화는 체크 된 도면과 체크되지 않은 도면의 차이보다 훨씬 컸다.

나는 안드로이드가 기본 코드에서 경계를 확인한다고 말하면 안전 할 것이라고 생각하거나 상당한 차이가있을 것이라고 생각합니다. 내 테스트 코드를 공유 하겠지만, 자신의 상황에 맞게 테스트를 수행하는 것이 좋습니다. 가능한 포인트가 비트 맵과 다르게 동작하거나 페인트 또는 캔버스의 다른 기능이 변경됩니다.

희망 사항 (또는 다른 질문이이 질문을 통해이 스레드에서 우연히 발견 될 수 있음).

관련 문제