Android OpenGL: Bitmap.getHeight ()> фактическая высота - PullRequest
1 голос
/ 13 сентября 2011
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.background);

Мой background.png имеет размер 512x512px

Я использую BitmapFactory для загрузки растрового изображения фонового файла ресурсов.

Странная вещь:

Log.d("bitmap height", bmp.getHeight() + "px");

всегда возвращает 768 пикселей.

Как это возможно?

Мой openGL настроен так:

width = 480;
height = 800;
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(0.0f, width, 0.0f, height, -1.0f, 1.0f);

gl.glShadeModel(GL10.GL_FLAT);
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glColor4x(0x10000, 0x10000, 0x10000, 0x10000);
gl.glEnable(GL10.GL_TEXTURE_2D);


gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
gl.glClearColor(0.5f, 0.5f, 0.5f, 1);
gl.glDisable(GL10.GL_DEPTH_TEST);
gl.glDisable(GL10.GL_DITHER);
gl.glDisable(GL10.GL_LIGHTING);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

Ответы [ 2 ]

2 голосов
/ 13 сентября 2011

BitmapFactory будет масштабировать растровое изображение, когда DPI растрового изображения не соответствует DPI экрана.Решение состоит в том, чтобы установить для параметра inScaled значение false:

BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inScaled = false;
Bitmap bmp = BitmapFactory.decodeResource(getResources(),
    R.drawable.background, opts);
2 голосов
/ 13 сентября 2011

768/512 = 1,5 Это коэффициент, используемый для вашего разрешения экрана.

...