2011-09-11 4 views
0

다소 이상한 문제가 있습니다. Android 용 게임을 만들고 있는데 지금까지는 기본 (mdpi) 밀도의 스프라이트를 사용했습니다. 기본적으로 내 모든 스프라이트를 /res/drawable 폴더에 덤프합니다. 화면 밀도가 다른 폴더가 아직 없습니다. 나는 현재 화면 밀도가 hdpi 인 물리적 장치에서 내 응용 프로그램을 테스트하고 있으므로 실제로는 /res/drawable-hdpi 폴더를 만들고 그 안에 모든 크기 조정 된 비트 맵을 넣습니다. 그러나, 내 애플 리케이션은 정말 느리게 실행되고있는 것 같습니다; 모든 게임 객체를 그리거나 애니메이션으로 만들려고 할 때 거대한 지연이 있습니다. /res/drawable 폴더의 내용을 사용하면 이런 일이 발생하지 않습니다.hdpi 리소스를 사용할 때 Android 앱이 느려집니다.

내 AndroidManifest.xml 파일에서 supports-screens 태그로 놀려고했지만 실제로 많은 것을하지 않았습니다.

<supports-screens android:resizeable="true" 
        android:smallScreens="false" 
        android:normalScreens="true" 
        android:largeScreens="true" 
        android:anyDensity="true"/> 

는 확실히 단순히 각 폴더의 확장 버전을 덤핑 다른 밀도에 대한 비트 맵을 사용하여 더있다 : 이것은 내가 가진 것입니다.

답변

2

동일한 문제가 있습니다. 게임을 작성하고 Android 표면을 사용하여 게임을 작성하는 경우이 문제가 발생합니다. 게임이 개발 초기 단계라면 OpenGL에 가지고있는 것을 포팅하는 것이 좋습니다. 표준 표면을 사용하는 하드웨어 가속은 없습니다 (적어도 아직은 아닙니다). 표면 모드로 유지하려는 경우 내 유일한 제안, 최적화 최적화 최적화. 모든 그래픽을 256 색으로 줄이고 절대적으로 필요한 경우에만 투명도를 사용하고 사용자에게 많은 성능 옵션을 제공하십시오. 배경을 끄거나 저해상도 자원을 사용하는 것과 같습니다.

+0

저는 OpenGL로 전환하고 싶지 않은 단계에 있습니다. 이것이 내 첫 번째 앱인 것을 고려해 볼 때 Canvas를 사용하여 벗어날 수 있다고 생각합니다. 또한 OpenGL은 2D 그래픽과 관련하여 훨씬 뛰어납니다. 나는 이것이 주로 3D 그래픽으로 알려져 있다고 생각했습니다. 의견? – Dan

+0

메모리 및 하드웨어 가속에 문제가 있습니다. 표준 표면은 하드웨어 가속이 아니며 VM 메모리 힙에 보관됩니다 (이 방법은 극히 제한적입니다). GL 서페이스는 하드웨어 가속을 통해 장치의 모든 메모리에 액세스 할 수 있습니다. GL 텍스처를 사용하고 GL 엔진을 사용하여 조작하면 하드웨어를 사용하여 프로세스 속도를 높입니다. 표준 서페이스를 사용하는 경우, 소프트웨어를 사용하여 객체를 화면에 블릿 (Blit)하는 것은 당연히 훨씬 느립니다. – Salx

관련 문제