0

私はOpenGL ESに非常に慣れていません。私の理解では、openGL ES はテクスチャに対して 2 の累乗サイズの画像しか許可しません (例: 512*512 または 256*256 など)。さまざまなサイズの画像をテクスチャとして表示する方法を探していますが、サイズが 2 の累乗ではなく、サイズが異なります。

画像はインターネットからダウンロードされます。ダウンロードする前にサイズを変更することは問題外です。

テクスチャに POT サイズ以外の画像を使用する方法はありますか? サイズを変更するメソッドを作成する必要がありますか? それを行うライブラリはどこかにありますか?

テクスチャはライブラリ min3d を使用して長方形に適用されます: http://code.google.com/p/min3d/ thks!

編集:

リソースからテクスチャをロードする例:

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

Bitmap bitmap;

bitmap = BitmapFactory.decodeStream(is);
4

1 に答える 1

1

画像をロードするとき、POT サイズのより大きな Bitmap コンテナを作成できます。次に、非 POT イメージをその中にコピーします。新しいビットマップをテクスチャとしてロードすると、必要なサイズにトリミングできます (glTexParameteriv() の 3 番目のパラメータ)。

コンテナのビットマップを作成するには:

// 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();
于 2012-10-08T13:32:45.860 に答える