Mac OS X用のドキュメントベースのアプリケーションを開発しています。これは一種のメディアプレーヤーですが、オーディオまたはビデオファイルを再生する代わりに、OpenGLアニメーションを指定するメタデータを含むテキストファイルを開くことになっています。ApplesQuickTimeXウィンドウスタイルを模倣したいと思います。つまり、Cocoaには適切なウィンドウスタイルがないため、すべてのウィンドウ描画を自分で行う必要があります。
私に頭痛の種を与えることが1つあります。それは、MacOSXウィンドウで通常見られる丸い角です。ボーダレスウィンドウマスクを使用して、CGSの魔法を使ってみました。ウィンドウの整形を可能にするプライベートAppleヘッダーがいくつかありますが、もちろんそれらは文書化されていません。窓の端に長方形の穴を開けることはできたが、Appleがどのようにして角を丸くしたのか理解できなかった。
OpenGLビューポートは常に長方形であるため、透明なウィンドウを作成して自分でフレームを描画することはできません。これを変更する唯一の方法は、アルファ透明度のNSOpenGLCPSurfaceOpacityをオンにし、ステンシルバッファまたはシェーダーを使用してエッジを切り取る方法です。かなりのオーバーヘッドの地獄のようです。
OpenGLViewをタイトルバー付きの標準のCocoaウィンドウに配置すると、下端が丸くなります。これは、ビュー階層のNSThemeFrameステージで発生しているようです。これがどのように行われるかについてのアイデアはありますか?