在后台线程上渲染OpenGL,仍然可以在Mac OSX中使用Cocoa Controls

时间:2013-01-10 20:57:14

标签: macos cocoa opengl nsopenglview

我正在开发基于OpenGL的mac osx控件。目前我正在使用NSOpenGLView和CVDisplayLink来协调我在后台线程上的渲染。这很好用,但我需要允许Cocoa控件显示在这个基于OpenGL的控件上。

我意识到你可以通过将Cocoa控件放在无边界窗口中来实现这一点,但是,这对我的用户来说似乎不是一个非常好的工作流程。

或者我可以使视图层支持并且我得到了它,但是我不喜欢在主线程上渲染我的OpenGL内容,有时它会在帧速率下降时阻塞主线程。

是否有任何样本展示如何实现两全其美?

1 个答案:

答案 0 :(得分:0)

渲染的后台线程完全无关紧要。您只需要为视图启用图层支持,然后在OpenGL内容的基础上正确合成子视图/控件。您还可以使用CAOpenGLLayer更快地使用CALayers进行分层。