在我的Android应用程序中,有一个OpenGL渲染器覆盖在画布上。我正在测试的设备是Droid x。
我正在将所有绘图功能移到Open Gl上,但我注意到了一个奇怪的问题。
似乎画布在通知栏后立即开始绘制,但GL渲染从屏幕的顶端开始。
这有点重要,因为我的游戏的物理特性是基于在画布上绘制的屏幕指标。
理想情况下,我认为我可以通过某种方式将GLview向下移动通知栏的高度来解决问题,但我不确定如何执行此操作或是否可能。
更改以下代码似乎使我的应用程序看起来正确,但我需要一种方法使其更加跨平台安全。
我通过改变......来解决这个问题。
gl.glViewport(0, 0, width, height)
到
gl.glViewport(0, -38, width, height)
答案 0 :(得分:2)
您使用多个可绘制文件夹吗?在我的一个应用程序上,我使用以下代码,该代码基于获取手机选择的可绘制尺寸。
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
更改为您图片的大小。