2012-04-16 4 views
0

私はAPIレベル7を使ってAndroidの中で、次の達成したいと思います:Android GL10でGL_VIEWPORTディメンションを取得するにはどうすればよいですか?

glGet(GL_VIEWPORT, someBuffer) 

Documentation for OpenGL ES 1.1は、C APIの一部としてこれを示しています。

私は、次のコードを使用して試してみた:私はそうのような表面のさまざまな段階での出力を得る

int[] results = new int[4]; 
    gl.glGetIntegerv(GL10.GL_MAX_VIEWPORT_DIMS, results, 0); 
    for (int i = 0; i < results.length; i++) { 
     Log.e(TAG, "results[" + i + "]: " + results[i]); 
    } 

を:

onSurfaceCreated called 
    results[0]: 4096 
    results[1]: 4096 
    results[2]: 0 
    results[3]: 0 
onSurfaceChanged called with height: 800 and width: 480 
    //NOTE: gl.glViewport(0, 0, width, height); is called here 
    results[0]: 4096 
    results[1]: 4096 
    results[2]: 0 
    results[3]: 0 
onDrawFrame called 
    results[0]: 4096 
    results[1]: 4096 
    results[2]: 0 
    results[3]: 0 

はどのようにしてAndroidのクロノスGLESを使用してこれを行うのでしょうか?

+0

ビューポートの最大サイズ(GL_MAX_VIEWPORT_DIMS)または現在のビューポートサイズ(GL_VIEWPORT)を取得しますか? –

答えて

2

Androidがあなたを自分から守ることを発見しました。 が呼び出される前にonSurfaceChangedが呼び出されます。このデータをキャプチャして保持するのは私たちの責任です。

0

定数GL_VIEWPORTは、GL10のインターフェイスの一部ではなく、GL11です。代わりにGL11.GL_VIEWPORTを使用してください。これが合わないと思う場合は、前にGL11にインスタンスをキャストできますが、これは何の違いもありません。

+0

'GL11'は機能しませんでした。それでも、すべてゼロが返されました。私は大きなバッファも試しました。 – Scoobie

+0

エラーが出ましたか( 'glGetError')?あなたはメソッド_after_ 'onSurfaceChanged'を呼び出しましたか?有効なGLコンテキストがありますか? –

関連する問題