다소 이상한 문제가 있습니다. 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"/>
는 확실히 단순히 각 폴더의 확장 버전을 덤핑 다른 밀도에 대한 비트 맵을 사용하여 더있다 : 이것은 내가 가진 것입니다.
저는 OpenGL로 전환하고 싶지 않은 단계에 있습니다. 이것이 내 첫 번째 앱인 것을 고려해 볼 때 Canvas를 사용하여 벗어날 수 있다고 생각합니다. 또한 OpenGL은 2D 그래픽과 관련하여 훨씬 뛰어납니다. 나는 이것이 주로 3D 그래픽으로 알려져 있다고 생각했습니다. 의견? – Dan
메모리 및 하드웨어 가속에 문제가 있습니다. 표준 표면은 하드웨어 가속이 아니며 VM 메모리 힙에 보관됩니다 (이 방법은 극히 제한적입니다). GL 서페이스는 하드웨어 가속을 통해 장치의 모든 메모리에 액세스 할 수 있습니다. GL 텍스처를 사용하고 GL 엔진을 사용하여 조작하면 하드웨어를 사용하여 프로세스 속도를 높입니다. 표준 서페이스를 사용하는 경우, 소프트웨어를 사용하여 객체를 화면에 블릿 (Blit)하는 것은 당연히 훨씬 느립니다. – Salx