私は、mali-400 gpu で実行される opengl-es アプリケーションを実装しました。カメラから 1280x960 RGB バッファを取得し、glTexImage2D を使用して GPU でレンダリングします。
ただし、glTexImage2D 呼び出しは、1280x960 解像度のフレームで約 25 ミリ秒かかります。pCameraBuffer の余分な memcopy を行います。
1) glTexImage2D のパフォーマンスを改善する方法はありますか? 2) FBO は役に立ちますか? フレーム バッファ オブジェクトを使用してレンダリングする方法を教えてください。FBO の例はほとんど見つかりませんでしたが、これらの例では最後の引数 (データ) で glTexImage2d に NULL が渡されていることがわかります。どうすればFBOでpCameraBufferをレンダリングできますか?
以下は、各カメラ フレームに対して実行されるコードです。
glGenTextures(1, &textureID);
glBindTexture(GL_TEXTURE_2D, textureID);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, SCENE_WIDTH, SCENE_HEIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, pCameraBuffer);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDeleteTextures(1, &textureID);