2012-01-11 7 views
0

の上に描画するにはどうすれば(通常のdrawRectメソッドで行われるよう)「通常の」バックグラウンドで実行されているOpenGLのアニメーションの上に描画実装していますか?私のアプリは、デフォルトのXcodeゲームアプリテンプレートであるOpenGLアプリです。 GLKViewControllerにはdrawRectメソッドがありません。追加すると、決して呼び出されません。 drawInRectメソッド(存在する)に描画コードを実装しようとしましたが、実行時エラーが発生します。 は、「正規」のOpenGL層

だから要約する:私はOpenGLを使用しますが、通常のクオーツプリミティブを使用していない(何でも、ライン、パス)のものを描き、既存の3Dレンダリングの上にこれを表示したいと思います。

答えて

0

確認drawRectが呼び出されるようにするには、おそらく他のルートを行く必要があります。それに描画を開始、その後、[CAEAGLLayer class]を返すために、メインビューの+ (Class)layerClass方法を変更し、標準のCocoa Touchのプロジェクトを作成します。 CAEAGLLayer documentationは、特にあなたが何をしたいのかやっに対して警告していることに注意してください:

CAEAGLLayerオブジェクトの上に他の層を描画することは避けてください。他の非OpenGLコンテンツを描画する必要がある場合は、GLコンテンツの上に透明な2Dコンテンツを配置し、OpenGLコンテンツが不透明であり、変換されていないことを確認すると、

チェックアウト(PaintingView.m中)layerClassオーバーライドを示す簡単なのOpenGL ESプロジェクトのGLPaintプロジェクト。彼らはlayoutSubviewstouchesBegan/Moved/Endedを使用して図面を作成します。

+0

ありがとうございました。実際の描画は、[context presentRenderbuffer:GL_RENDERBUFFER_OES]呼び出しでrenderLineFromPointで行われることがわかります。しかし、どのように私はこのGL層の上のレイヤーに通常の石英の描画コマンドを組み込むでしょうか?私はGL層と同じ "文脈"を使用することはできないと思いますか? –

+0

Interface Builderまたはコードで、追加の 'UIView'をメインビューのサブビューとして定義します。それぞれの 'UIView'は内部の' CALayer'を持っていますので、それ自身を描画するように要求されたときには、そのレイヤのコンテキストを使用します。その時点でのGLコンテキストは無関係です。 – darvids0n

+0

[このSOの質問](http://stackoverflow.com/questions/4500708/marrying-core-animation-with-opengl-es)が役立ちます。 – darvids0n

関連する問題