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