2012-02-29 9 views
4

私はMacでOpenGLビューを持っています。私はその前にNSTextFieldを置いておきたいが、それを正面に置いても、それは見えない。OpenGLビューのコントロールを作成する

非常に簡単なテストケースがあります。 XCode(私は4.0.2を使用しています)とウィンドウで新しいプロジェクトを作成します。 OpenGLビューを追加します。テキストフィールドを追加し、その半分がOpenGLビューと重なるように設定します。プログラムを実行します。フィールド全体が表示されますが、テキストを入力すると、フィールドの前後をどのように並べるかにかかわらず、テキストの半分だけが表示されます。

答えて

2

NSOpenGLViewは、実際には、デフォルトでは上、窓の上または下にある表面に描く、ウィンドウ内で描画されません。 OpenGLサーフェスの前面にコントロールを配置する場合は、NSOpenGLContextパラメータNSOpenGLCPSurfaceOrderを使用して、サーフェスをウィンドウの下に作成する必要があります。しかし、OpenGLサーフェスを見るには、ウィンドウ内の透明な四角形を切り取る必要があります。

編集追加する:代わりに、あなたは、OpenGLの表面だけでなく、メインウィンドウの上にある透明オーバーレイや子ウィンドウを作ることができ、そしてそこにコントロールを配置。どちらの方法が簡単かはわかりません。

+0

私はあなたの提案をとり、いくつかの他のことを試しました。 NSOpenGLCPSurfaceOrderパラメータを-1に変更したので、OpenGLイメージではなくフィールドが表示されるようになりました。私は透明になるようにウィンドウを変更しましたが、OpenGLフィールドは白色のままでした。 OpenGLビューを白くする方法がわかりません - NSViewでこれを行うための呼び出しが表示されません。 – user1240905

+0

NSTextFieldで新しいウィンドウを作成し、上記のウィンドウの背景を透明にしました(詳細は後で説明します)。そのようなことはうまくいきましたが、マウスクリックを面白いものにしています。なぜなら、それらを1つのウィンドウで把握してから次のウィンドウに渡す必要があるからです。 Appleには、それを行う方法を示すコードがありますが、プロジェクト "FunkyOverlayWindow"はOS X 10.7に依存しており、これをOS 10.5で動作させるには必要です。私はさらに見て、それを実現するために抽出できるコードがあるかどうかを見ていきます。 0.0 \t \t \t \t \t \t \t \t \t \t \t \t \t \t緑:ところで – user1240905

+0

は、ウィンドウの背景を透明にするためのコードは\t NSColor *のbackgroundColor = [NSColor colorWithCalibratedRedで0.0 \t \t \t \t \t \t \t \t \t \t \t \t \t \t青:0.0 \t \t \t \t \t \t \t \t \t \t \t \t \t \tアルファ:0.0]。 \t [_overlayWindow setBackgroundColor:backgroundColor]; \t [_overlayWindow setAlphaValue:.9999]; "setAlphaValue"値は.9999でなければならないことに注意してください。 1.0の場合、黒いウィンドウが表示されます。 Go figure。 – user1240905

関連する問題