Странное поведение высоты экрана в пикселях? - PullRequest
1 голос
/ 25 декабря 2011

В моем приложении для Android есть рендерер OpenGL, наложенный поверх холста.Устройство, на котором я тестирую это Droid x.

Я перемещаю все функции рисования в Open Gl, но я заметил любопытную проблему.

Кажется, что холст рисует, начиная сразу после панели уведомлений, но GLрендеринг начинается с кончика экрана.

Это немного важно, потому что физика моей игры основана на показателях экрана, отображаемых на холсте.

В идеале, думаю, я мог бы решить проблему каким-то образомсдвиг GLview вниз на высоту панели уведомлений, но я не уверен, как это сделать или возможно ли это.

Изменение следующего кода, кажется, заставляет его выглядеть корректно из моего приложения, но мне нужноспособ сделать его кроссплатформенным безопасным.

Я исправляю это, меняя ...

gl.glViewport(0, 0, width, height)

на

gl.glViewport(0, -38, width, height) 

1 Ответ

2 голосов
/ 25 декабря 2011

Вы используете несколько папок для рисования? в одном из моих приложений я использую следующий код, который основан на получении размеров отрисовки, выбранной телефоном.

image = bgtile.getWidth();

if (image == 32) {
        gl.glViewport(0, -19, width, height) 
    }
    if (image == 42) {
        gl.glViewport(0, -25, width, height) 
    }
    if (image == 64) {
        gl.glViewport(0, -38, width, height) 
    }

Если телефон выбирает изображение с разрешением ldpi, он делает первое if, второе - с разрешением mdpi и третье - с разрешением ldpi. просто измените 32, 42 и 64 на размер вашего изображения.

...