0

我对 OpenGL ES 很陌生。据我了解,openGL ES 仅允许使用两种尺寸的纹理图像(例如 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() 的第三个参数)。

创建容器位图:

// 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 回答