OpenGL を使用する .NET アプリケーションを作成しようとしています。4 つのビューポートが必要ですが、4 つのコントロールを作成して同期する代わりに、1 つのコントロールを 4 つのビューポートに分割します。ビューポートを視覚的に分割するために、OpenGL コントロールに線を描画したいと考えています。カスタム コントロールを使用しています。これを実現するために、基本の UserControl の上に 2 つのパネルを配置しています。中央のパネルは OpenGL パネルで、OpenGL 出力がレンダリングされます。上部のパネルは、ビューポートの仕切りを描画する場所であり、透明であるため、その下のパネルを見ることができます。
問題は、OpenGL ビューポートが読み込まれると (別のスレッドにあるため、数秒間だけ黒くなる)、z レイヤーに関係なく、UserControl 全体が覆われることです。OpenGL パネルを縮小すると、まだパネルのみにペイントされていることがわかりますが、その上にあるものは気にせず、カバーするだけです。
なぜこれが起こったのですか?私が OpenGL コンテキストなどをどのように作成しているかを確認したい場合は、私が従ったチュートリアルを見ることができます。UserControl ではなく、Panel のハンドルを渡しています。カスタム コントロール内のすべてのコントロールは、同じデバイス コンテキストまたは何かを共有していますか?