2011-11-07 1 views
3

質問:Android NDKのhello-gl2の例が正しいですか?

Android NDK r6bのhello-gl2の例を考えてみると、ユーザーがGLSurfaceViewの一時停止/再開アクションを繰り返し呼び出すと、この例は正しいですか? GL2JNIView.Renderer.onSurfaceChanged()が呼び出されるたびに、すべてのOpenGLリソース(シェーダ、テクスチャ)が作成されるので、決して破棄しないように頼んでいます。

背景:

私はいくつかのOpenGL ES 2.0ゲームをデバッグしようとしているが、一時停止/再開時に誤っ振る舞いC++とJNIを使​​用して実装しました。私はこれのための参考例を見つけようとしていましたが、私が現在使っているthis more complex version of itというIMHOのかもしれないNDKのhello2-glの例以外は何も見つかりませんでしたが、 OpenGLコンテキストは、GLSurfaceViewがonPause()メソッドで終了する前に破棄されます。このメソッドでは、コンテキストにバインドされたすべてのOpengGLシェーダとテクスチャが破棄されます。 OpenGLのリソース処理の一時停止/再開の正しい方法に関するNDKを使って、Android上のOpenGL ES 2.0の本当の正しい例を教えてください。

はあなたの助けをいただき、ありがとうございます。

答えて

2

これは適切なライフサイクルではありませんが、近いです。 GLサーフェスが完全に覆い隠されるとEGLコンテキストが破壊され、OpenGL呼び出しによって割り当てられたリソースが解放されます。そのため、アプリケーションで実行時にアクティブな管理が必要な場合(たとえば、メモリにキャッシュするテクスチャが多すぎる場合など)、これらのリソースを手動で解放する必要はありません。

これは、OpenGL呼び出しによってOpenGLによって割り当てられたリソースとメモリにのみ適用されることに注意してください。 OpenGLの外に割り当てるバッファは、いつものように解放する必要があります。

関連する問題