これが私の NSOpenGLView でやりたいことです。現在、NSOpenGLView はウィンドウの全領域をカバーしており、NSOpenGLView の上にボタン、nsview、および画像を追加したいと考えています。Web を調べたところ、次の[myOpenGLView setWantsLayer:YES];
ようなことができることがわかりました[myOpenGLView addSubView:someView]
。
これは私が結果として得るものです:
(Family Guy を見ていたため、やや悪い例ですが、ここでビデオ メモリ バッファーが傍受されているという事実を証明しています)
ご覧のとおり、一部のビデオ メモリ バッファがウィンドウ上で歪んでいます。今、私はいくつかのデバッグを行っていましたが、問題は-setWantsLayer
. コードでその行をコメントアウトすると、すべての OpenGL が正しく表示されます。
これは私が得るべきものです:
私の質問は、どうすれば OpenGL ビューを正しく表示でき-addSubViews
ますか?
Apple には、「LayerBackedOpenGLView」( http://developer.apple.com/library/mac/#samplecode/LayerBackedOpenGLView/Introduction/Intro.html ) と呼ばれるこの作業の非常に優れたサンプル プロジェクトがあり、私はそれをしばらく見てきました。今は良い時間で、私はそれで何が違うのかわかりません。私が気づいたことの 1 つは、NSOpenGLView を使用する代わりに、Apple が NSView を使用してクラスを NSOpenGLView をサブクラス化するカスタム クラスに変更しているのに対し、私は NSOpenGLView を使用してクラスを NSOpenGLView をサブクラス化するカスタム クラスに変更していることです。それが問題を引き起こすかどうかはわかりませんが、NSView に変更しても同じ問題が発生します。