0

OpenGL ベースの mac osx コントロールに取り組んでいます。現在、NSOpenGLView と CVDisplayLink を使用して、バックグラウンド スレッドでレンダリングを調整しています。これはうまく機能しますが、この OpenGL ベースのコントロールの上に Cocoa コントロールを表示できるようにする必要があります。

Cocoa コントロールをボーダレス ウィンドウに配置することでこれを実行できることはわかっていますが、それは私のユーザーにとってあまり良いワークフローとは思えません。

別の方法として、ビューをレイヤーでサポートすることもできますが、それが機能するようになりましたが、メイン スレッドで OpenGL コンテンツをレンダリングするのは好きではありません。フレーム レートが低下すると、メイン スレッドがブロックされることがあります。

両方の長所を活かす方法を示すサンプルはありますか?

4

1 に答える 1

0

レンダリングのバックグラウンド スレッドはまったく関係ありません。ビューのレイヤーバッキングを有効にするだけで、サブビュー/コントロールが OpenGL コンテンツの上に正しく合成されます。CAOpenGLLayer を使用して、CALayers とのより明示的な階層化を行うこともできます。

于 2018-01-10T21:28:55.153 に答える