2012-03-22 140 views
0

我有一個視圖,需要一次渲染多個圖像,我有很多紋理可以使用。 問題是,紋理正在改變,因爲我在任何給定的時間緩存有限的圖像,所以我需要在飛行中加載紋理,這會嚴重拖延渲染。 我該如何解決這個問題?OpenGL ES 2.0加載動態紋理

+0

您是否使用任何類型的壓縮? – Maz 2012-03-23 09:03:47

+0

我通過565配置中的MediaStore加載縮略圖,如果這就是您的意思... 如何使用壓縮? – saarraz1 2012-03-23 10:15:27

回答

0

壓縮實際上會阻礙你,因爲你必須花時間執行壓縮算法才能將圖像轉換爲可用的形式。

你使用了多少紋理,它們的尺寸是多少?

如果紋理很小,你可以嘗試做的事情是將幾個紋理塞入到一個大紋理中,並使用紋理座標來選擇合適的紋理。這會減少你不得不glGenTexture和glBindTexture的次數。另外,如果您的紋理訪問方式有任何形式,那麼您可以利用它來智能地將紋理分組爲更大的紋理。

如果您可以提供有關您的紋理的性質的其他信息,例如其內容是否更改或其他內容,那麼您可能會得到更有幫助的答案。

+0

紋理是來自SD卡的圖像,平均大約500x500像素。它們以方形圖像的網格呈現。它們按重要性的順序由單獨的加載線程加載,然後傳遞給GL線程以便加載到GL上下文中。我試圖將它們分組成行,這樣每行都是GL紋理,但問題是我需要將從媒體存儲裝載的小型位圖繪製到保存行紋理的位圖中,並且由於Canvas繪製速度慢,所以我得到縮短紋理加載時間,而且我還必須在新位圖加入時重新加載行紋理。 – saarraz1 2012-03-27 21:09:25

+0

如果我正確地理解了你,那麼對於每一行紋理,你需要通過Android的Canvas類從媒體存儲中覆蓋較小的圖像(例如縮略圖)?如果是這種情況,爲什麼沒有OpenGL繪製行紋理,然後在其上繪製縮略圖。那麼你不需要去畫布類來混合兩個紋理。 – MyReliableSchreck 2012-03-27 22:08:31