0

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

我意识到您可以通过将 Cocoa 控件放在无边框窗口中来做到这一点,但是,对于我的用户来说,这似乎不是一个很好的工作流程。

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

是否有任何示例展示了如何实现两全其美?

4

1 回答 1

0

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

于 2018-01-10T21:28:55.153 回答