0

私は、過去数か月間、iOS の OpenGL ベースのアプリに取り組んできました。この間、ストーリーボードを使用するのではなく、メインの UIWindow と単一の UIView の両方をコードで作成しました。注意すべき重要な項目は、UIView から継承する EAGLView (多くの Apple の例で使用されている) のインスタンスを作成することです。

私が扱っているコード ベースは非常に広範で、とりわけ、別のレンダリング スレッドを使用しています。この記事の終わり近くで、この点に戻ります。

これを念頭に置いて、ネイティブ UI サポートを追加したいと考えています。これを行うために、ストーリーボードを使用しています (初めて)。私の現在のセットアップは、2 つのボタンを備えたメイン/ルート ビューで構成されています。各ボタンはモーダル セグエを使用して、画面に新しいビューを配置します。

できるだけ多くのコードを再利用するために、私がセグエするビューのタイプが EAGLView (UIView ではなく) であることを指定しました。私がしなければならなかった唯一の変更は、「initWithFrame」で初期化する代わりに、「initWithCoder」で初期化することです。

ストーリーボードに移動した以外は、コード ベースに変更はありません。しかし、EAGLView にセグエすると、何もレンダリングされません。表示されるのは白だけです。GLKit は、私が既に書いた機能の多くを複製するため、GLKit の使用をためらっています (ストーリーボードを使用する前に、すべてが正常にレンダリングされていました)。さらに、GLKit はレンダリング用のコールバックを提供しますが、私は別のレンダリング スレッドを持っています。

私のシナリオは、次の投稿によく似ています。

OpenGL iOS ビューが描画されない

すべての呼び出し (または呼び出しのすべてのグループ) に対して GL エラー チェックを行っていますが、エラーは報告されていません。さらに奇妙なのは、(Xcode で) デバッグ用に OpenGL ES フレームをキャプチャすると、デバッガーが実際に期待どおりのコンテンツを表示することです。

ここに何かアイデアはありますか?私は困惑しています。

4

1 に答える 1

0

次のことを試してください。

  1. セグエしているビューでレンダリングを停止していることを確認します (時間の停止など)。新しい EAGLView をその上にプッシュしただけなので、このビューはまだ有効です。
  2. XCode の OpenGL ES フレーム キャプチャを使用して、新しいビューで OpenGL の状態をデバッグします。テクスチャまたは他のオブジェクトへのバインディングが欠落していないことを確認します。
  3. 上記が機能しない場合は、可能な限り単純なレンダリング (単純なクワッドなど) を記述し、そのコードをデバッグします。
于 2013-06-25T20:50:21.117 に答える