我正在为 Mac OS X 开发一个基于文档的应用程序。它是一种媒体播放器,但不是播放音频或视频文件,而是应该打开包含指定 OpenGL 动画的元数据的文本文件。我想模仿 Apple 的 QuickTime X 窗口样式。这意味着,我必须自己完成所有的窗口绘图,因为 Cocoa 没有合适的窗口样式。
有一件事让我很头疼:圆角通常出现在 Mac OS X 窗口上。我尝试使用无边框窗口掩码并使用一些 CGS 魔法 - 有一些允许窗口整形的私有 Apple 标头,但它们当然没有记录。我能够在我的窗户边缘切出矩形孔,但我不知道苹果是如何实现圆角的。
创建一个透明窗口并自己绘制框架不起作用,因为 OpenGL 视口始终是矩形的,而改变它的唯一方法是打开 NSOpenGLCPSurfaceOpacity 以获得 alpha 透明度并使用模板缓冲区或着色器来切掉边缘,这似乎有很多开销。
如果我将 OpenGLView 放入带有标题栏的标准 Cocoa 窗口中,则底部边缘是圆形的。这似乎发生在视图层次结构的 NSThemeFrame 阶段。任何想法如何做到这一点?