2010-11-20 1 views
3

매우 큰 이미지를 내지도로 사용하는지도 앱을 만들었습니다. 사용자가 50 % 이상 축소했을 때 전체 이미지의 특정 정도와 낮은 해상도 비트 맵을 확대 할 때 고해상도 타일을 표시합니다. 그것은 괜찮습니다, 때로는 가비지 컬렉터에 새 타일이 쌓여서 약간의 지연이 생길 수 있습니다.OpenGL ES 및 Android에서 큰 비트 맵 처리

이제 어떻게 OpenGL ES를 렌더링하는 것이 더 좋은지 생각해보십시오. 필자는 이전에 그것을 전혀 읽지 않았지만 다른 turoial에서 읽은 것에서 8면을 가진 쿼드를 만들 수 있고 도려내기를 허용하여 화면에 현재 표시된 이미지 만 그릴 수 있습니다.

지연이 완전히 제거 되었습니까? 내 테스트 응용 프로그램에서는 이제 응용 프로그램 시작시로드되는 타일을 가지고 있지만 그 타일이 처음으로 그려진 타일 때문이라고 말할 수 있습니다. 감사.

답변

4

필자는 OpenGL 기반의지도 뷰를 작성 했으므로 나 자신을 그렇게 말하면 굉장합니다. 슬프게도 상용 프로젝트를위한 것이므로 코드를 제공 할 수 없습니다. 그러나 그것은 1 렌더링 스레드, 8 타일 다운로드 스레드 풀 및 (대부분의 질문과 관련) 1 NAND 플래시 또는 SD 카드에 타일을로드하고 저장하는 하나의 저장소 스레드를 가지고 있다고 말할 수 있습니다. 렌더링은 한 번에 하나의 타일로 이루어지며 각 타일은 2 개의 삼각형 (ES에 사각형이 없습니다)입니다. 여전히 물집이 빠르다.

+0

굉장합니다. 지도의 해상도는 얼마나 컸습니까? 내 것은 꽤 크고 6656 x 4880입니다. – jfisk

+0

당신은 어떻게 그걸 의미합니까? 1TB 정도의 데이터를 18 단계의 확대/축소 수준으로 볼 수있는 세계 최대 크기입니다. –

+0

각 타일은 HDPI 화면에서 256x256 픽셀이었고 MDPI의 경우 128x128이었습니다. 서버는 둘 다 허용했습니다. –