カメラからのフレームをエンコードするためにメディアコーデックを使用しており、gl サーフェスビューを使用してレンダリングしています。
私の ondrawframe は次のようになります
public void onDrawFrame(GL10 unused)
{
float[] mtx = new float[16];
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
surface.updateTexImage();
surface.getTransformMatrix(mtx);
mDirectVideo.draw(surface);
saveRenderState();
delegate.mInputSurface.makeCurrent();
mDirectVideo.draw(surface);
delegate.swapBuffers();
restoreRenderState();
}
したがって、ここでは、サーフェスにレンダリングする Draw(surface) を 2 回実行しています。これにより、システムのオーバーヘッドが発生します。オンドローを1回だけできるところはありますか?シェーダーを 2 回使用するのはコストのかかる操作です。レンダーとエンコーダーの間でサーフェスを共有する方法はありますか?