2012-07-06 8 views
0

나는 색칠 된 모양이 많이 드로잉되어 만들어진 입자 기반 게임을 쓰고 있습니다.안드로이드 드로잉 성능 - canvas.drawRect 대 비트 맵 드로잉

질문 1) 나는 캔버스를 통해 사각형 그리기 다음 페인트 설정에 의해 4 개 사각형을 그리기하고있는 적 유닛의 대부분을

.

비트 맵을 사용하여 그리거나 캔버스 그리기 도구를 사용하여 그리는 것이 더 좋은지 궁금합니다. 내가 끌어 당기고 싶은 적 유닛의 이미지를 쉽게 만들 수 있습니다.

질문 2) 화면에 그릴 수있는 이미지의 경우

, 나는 내가 그들을로드 할 필요가 궁금 해서요? 내가 RGB565 화면에 그릴 수 금식 이미지 형식입니다 읽었습니다

direction1 = BitmapFactory.decodeStream(assetMgr.open("direction1.png"));

:

는 지금은 다음과 같이로드 .PNG 이미지의 톤이있다. Microsoft 그림판에는 저장 옵션이 있지만 대부분의 프로그램은 비트 맵 형식이 아닌 비트 맵으로 만 저장됩니다. 새로운 형식을 사용하기 시작한다면 :

  1. 새로운 이미지를 만들고 같은 로딩 코드를 사용하십시오.
  2. 동일한 이미지를 사용하고 Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); ~ 과 같은 것을 초기로드 형식에서 RGB565 형식으로 변환하십시오.
  3. 새 이미지를 만들고로드 코드를 변경하십시오.

어떤 도움을 주셔서 감사합니다! 매우 감사드립니다.

답변

0
  1. 없음. 항상 OpenGL을 사용하는 것이 더 좋으며 유일한 단점은 입니다. 하드웨어가 이기 때문에 배터리로 인해 더 많은 에너지가 필요하다는 단점이 있습니다.

  2. RGB565는 이미지가 16 비트를 사용하므로 사용자가 찾아야 할 옵션을 의미합니다. 아무것도 변환하지 말고 사용하려는 형식으로 을 생성하십시오.

+0

디자인 과정에서 OpenGL로 변경하기에는 너무 늦었습니다. 그래서 내가 묻는거야. 나는 그것을 발송할 수 있도록 좀 더 많은 성능을 짜낼 필요가있다. –

+0

@ NathanTornquist, 나는 당신이 당신의 이미지를 그리는 데 사용할 캔버스 방법의 양과 이미지의 크기에 크게 의존한다고 생각합니다. DDMS로 가서 "Start method profiling"/ "Stop"을 사용하여 프로파일 링을 사용하십시오. 이렇게하면 CPU의 정확한 %가 모두 차지하는 것을 볼 수 있습니다. – Alehar

0

비트 맵이 프레임 단위로 이동하지 않으면 invalidate() 메서드 호출을 줄여야합니다. 캔버스는 변경이 이루어지고 업데이트되어야 할 때 다시 그려야합니다.