EGLと混同しています。
私の GLSurfaceView は EGLContext を作成します。次に、共有コンテキストを作成します。次に、EGLExtension を使用する必要があります。
私が使用しなければならないメソッドは呼び出されます (>=API18):
EGLExt.eglPresentationTimeANDROID(android.opengl.EGLDisplay display, android.opengl.EGLSurface surface, long time);
問題は、GLSurfaceView が javax.microedition.khronos.egl.EGLContext のみを作成することです。
つまり、GLSurfaceView を使用しないでください。そこで、少し似ている TextureView を試してみましたが、独自の EGL を処理する必要があるという違いがあります。その目的に適したものです。
しかし: TextureView は遅く、少なくともそのように見えたので、メソッド プロファイラーでいくつかの図を記録しました。
独自の EGL 処理を備えた TextureView:
上部の Thread は、中央の Thread を起動するクロックであり、TextureView にレンダリングされます。その後、TextureView を再描画するために、メイン スレッドが呼び出されます。
...そしてここで、独自の EGL 処理を備えた GLSurfaceView 時計は今回は真ん中にあり、上部のスレッドを呼び出して画像をフレームバッファーにレンダリングします。これを直接 SurfaceView (RENDERMODE_WHEN_DIRTY) に渡し、requestRender を呼び出しますビューのレンダリングをリクエストします。
GLSurfaceView を使用すると、TextureView を使用した場合よりもきれいに見えることが、簡単に見てわかるように既にわかります。
両方の例で、画面に他に何も表示されておらず、同じシェーダーでまったく同じメッシュをレンダリングしました。
私の質問に: EGL14 コンテキストで GLSurfaceView を使用する方法はありますか?
私は何か間違ったことをしましたか?