2010-11-20 58 views
3

我創建了一個使用非常大的圖像作爲我的地圖的地圖應用程序。當用戶放大到一定程度時,它會顯示高分辨率圖塊,並在縮小超過50%時顯示整個圖像的較低分辨率位圖。它工作正常,在我的原始機器人有時我可以看到一個非常輕微的滯後,由於新的瓷磚被吸入和從垃圾回收器。在OpenGL ES和Android中處理大型位圖

我現在想着OpenGL ES如何成爲更好的渲染方式。我以前從來沒有碰過它,但是從我在不同的turoials中閱讀的內容看來,我可以創建一個有8個面左右的四邊形,並啓用剔除功能,以便僅繪製屏幕上當前可見的圖像。

這是否會完全消除滯後?在我的測試應用程序中,我已經在應用程序啓動時加載了瓷磚,但我可以告訴這些延遲是由於第一次繪製這些瓷磚所致。謝謝。

回答

4

我已經寫了一個基於OpenGL的地圖視圖,如果我自己這樣說的話,它就是血腥的真棒。可悲的是這是一個商業項目,所以我不能提供代碼。然而,我可以告訴你它有1個渲染線程,8個tile下載線程池和(與你的問題最相關)1個存儲線程,用於加載並保存切片到NAND閃存或SD卡。渲染一次完成一個tile,每個tile有2個三角形(ES中沒有四邊形)。它仍然起泡快。

+0

真棒。你的地圖的分辨率有多大?我相信我的相當大,6656乘4880。 – jfisk 2010-11-21 19:52:16

+0

你是什麼意思?它的世界大小,在18個縮放級別...概述1TB數據的順序。 – 2010-11-21 21:13:09

+0

HDPI屏幕上的每個圖塊都是256x256像素,對於MDPI它是128x128。服務器允許兩者。 – 2010-11-21 21:14:30