在调用android opengl ES进行纹理贴图的时候,发现有的机器上能显示图片,有的机器上不能显示。是因为图片的尺寸不是2的N次幂,部分显卡不支持非2的N次幂纹理贴图。
将图片放大到2的N次幂,比如100 * 200的图片就放大到128 * 256。
为了显示图片不拉伸,坐标顶点使用原图的宽高比例。
第一次发贴,求通过,求指教
private class MyRenderer implements GLSurfaceView.Renderer {
private Bitmap bitmap;
private float[] vertex;
private float[] texture;
private short[] index;
private FloatBuffer mVertexBuffer;
private FloatBuffer mTextureBuffer;
private ShortBuffer mIndexBuffer;
private int mTextureID;
public MyRenderer(Context context, int bitmapRes) {
initData(context, bitmapRes);
initBuffer();
}
private void initData(Context context, int bitmapRes) {
Bitmap resBitmap = BitmapFactory.decodeResource(context.getResources(), bitmapRes);
int width = resBitmap.getWidth();
int height = resBitmap.getHeight();
int widthPowerOfTwo = getPowerOfTwo(width);
int heightPowerOfTwo = getPowerOfTwo(height);
int newWidth = (int) Math.pow(