这就是我想用我的 NSOpenGLView 做的事情。目前 NSOpenGLView 覆盖了窗口的整个区域,我想在 NSOpenGLView 之上添加按钮、nsview 和图像。我浏览了网络,发现这[myOpenGLView setWantsLayer:YES];
可以让我做类似[myOpenGLView addSubView:someView]
.
这是我得到的结果:
(有点不好的例子,因为我在看 Family Guy,但证明了视频内存缓冲区在这里被截获的事实)
如您所见,它正在将一些视频内存缓冲区扭曲到窗口上。现在我正在做一些调试,问题出在-setWantsLayer
. 一旦我在代码中注释掉该行,所有的 OpenGL 内容就会正确显示。
这是我应该得到的:
所以我的问题是,如何同时正确显示我的 OpenGL 视图-addSubViews
?
Apple 有一个非常好的示例项目,名为“LayerBackedOpenGLView”(http://developer.apple.com/library/mac/#samplecode/LayerBackedOpenGLView/Introduction/Intro.html),我一直在寻找它现在是美好的时光,我不知道我在做什么不同。我确实注意到的一件事是,Apple 没有使用 NSOpenGLView,而是使用 NSView 并将该类更改为子类 NSOpenGLView 的自定义类,而我使用 NSOpenGLView 并将该类更改为再次子类化 NSOpenGLView 的自定义类。不确定这是否会导致任何问题,但如果我将其更改为 NSView,我仍然会遇到同样的问题。