XCode が iOS 用の OpenGL プロジェクト用に作成するボイラー プレート OpenGL サンプル コードを実行しています。これにより、単純な ViewController がセットアップされ、GLKit を使用して残りの作業が処理されます。
アプリケーションのすべての更新/描画機能は C++ です。クロスプラットフォームです。
多くのフレームバッファの作成が進行中です。描画フェーズは、いくつかのフレーム バッファーにレンダリングしてから、既定のフレーム バッファーに戻そうとします。
glBindFramebuffer(GL_FRAMEBUFFER, 0);
これにより、GL_INVALID_ENUM が生成されます。iOS のみ。
私はその理由について完全に困惑しています。このコードは、iOS を除くすべての主要なプラットフォームで問題なく動作します。GLKit のせいにしたいです。GLKit を使用しない iOS OpenGL セットアップの例はありますか?
アップデート
次のコード スニペットでは、GLKit が使用しているデフォルトのフレームバッファを確認できます。なぜか「2」が出てきます。すべての glBindFrameBuffer 呼び出しで「2」を使用すると、うまくいきます。これは非常にイライラします。
[view bindDrawable ];
GLint defaultFBO;
glGetIntegerv(GL_FRAMEBUFFER_BINDING_OES, &defaultFBO);
LOGI("DEFAULT FBO: %d", defaultFBO);
GLKit が内部フレームバッファを 0 で生成しない理由は何でしょうか? これは、OpenGL の他のすべての実装で使用されるセマンティックです。0 がデフォルトの FBO です。