1

私の Android アプリケーションでは、キャンバス上にオーバーレイされた OpenGL レンダラーがあります。私がテストしているデバイスは Droid x です。

すべての描画機能を Open Gl に移行していますが、奇妙な問題に気付きました。

キャンバスは通知バーの直後から描画されているように見えますが、GL レンダリングは画面の端から始まります。

私のゲームの物理は、キャンバスに描画された画面のメトリックに基づいているため、これは少し重要です。

理想的には、通知バーの高さだけGLviewを下に移動することで問題を解決できると思いますが、これを行う方法や可能かどうかはわかりません。

次のコードを変更すると、アプリケーションからは正しく見えるように見えますが、クロスプラットフォームでより安全にする方法が必要です。

変更することで修正します...

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

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

1 に答える 1

2

複数のドローアブル フォルダーを使用していますか? 私のアプリの 1 つで、次のコードを使用します。これは、電話が選択するドローアブルのサイズを取得することに基づいています。

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、2 番目に mdpi が実行され、3 番目に ldpi が実行されます。3242および64を画像のサイズに変更するだけです。

于 2011-12-25T18:12:59.843 に答える