2011-12-25 66 views
1

在我的android應用程序中,有一個OpenGL渲染器覆蓋在畫布上。我正在測試的設備是Droid x。以像素爲單位的屏幕高度的奇怪行爲?

我將所有的繪圖功能移到打開G1,但我注意到一個奇怪的問題。

看起來,畫布從通知欄後立即開始繪製,但GL呈現從屏幕的頂端開始。

這有點重要,因爲我的遊戲物理基於畫布中繪製的屏幕度量。

理想情況下,我想我可以通過某種方式將GLview向下移動通知欄的高度來解決問題,但我不知道如何做到這一點,或者如果可能的話。

更改下面的代碼似乎使我的應用程序看起來正確,但我需要一種方式使它更加跨平臺安全。

我通過改變解決它......

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

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

回答

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,4264更改爲您的圖像大小即可。