2012-10-08 137 views
0

我對OpenGL ES非常陌生。 根據我的理解,openGL ES只允許兩種大小的圖像爲紋理(例如512 * 512或256 * 256等)供電。我正在尋找一種方法來顯示不同大小的圖像作爲紋理,但它們不是2號的大小,它們的大小各不相同。Android Open GL ES非POT紋理

圖片將從互聯網上下載。在下載之前調整它們的大小是不可能的。

有沒有辦法使用非POT大小的圖像紋理?我必須創建一個方法來調整它們的大小嗎?那裏有一個圖書館嗎?

紋理將應用於使用庫min3d的矩形: http://code.google.com/p/min3d/ thks!

編輯:從資源紋理加載

例如:

InputStream is =getResources().openRawResource(R.drawble.drawable1); 

Bitmap bitmap; 

bitmap = BitmapFactory.decodeStream(is); 
+0

OpenGL ES 2.0的不具有紋理尺寸這樣的限制。如果可能的話改用它。 – harism

回答

1

當在圖像中加載,可以爲它創建一個較大的位圖容器,它的罐尺寸。然後將非POT圖像複製到其中。將新的位圖加載爲紋理時,可以將其裁剪爲所需的大小(glTexParameteriv()的第三個參數))。

要創建容器位圖:

// work out the pot size you need from the source Bitmap's size 
// ... 

Bitmap bigger = Bitmap.createBitmap(potWidth, potHeight, Bitmap.Config.ARGB_8888); 
Canvas canvas = new Canvas(bigger); 
canvas.drawBitmap(nonPOTBmp, 0, 0, null); 

// free up memory 
nonPOTBmp.recycle(); 
+0

你能詳細解釋一下嗎?如何在第一個位置創建第二個位圖?如何創建一定大小的位圖?我只知道如何壓縮位圖,但是我無法控制大小。另外你說的方法我沒有打開GL,只有glTexParameterf或glTexParameterx。謝謝 – vallllll

+0

看我的編輯創建第二個位圖。 – nmw