Android Open GL ES非POT纹理

时间:2012-10-08 13:14:19

标签: android opengl-es textures

我是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);

1 个答案:

答案 0 :(得分:1)

加载图像时,可以为POT大小创建一个更大的Bitmap容器。然后将非POT图像复制到其中。当您将新的位图作为纹理加载时,您可以将其裁剪为您想要的大小(glTexParameteriv()的第三个参数)。

创建容器Bitmap:

// 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();