这就是我想用我的NSOpenGLView做的事情。目前,NSOpenGLView覆盖了整个窗口区域,我想在NSOpenGLView上添加按钮、nsview和图像。我浏览了一下网页,发现[myOpenGLView setWantsLayer:YES];允许我做像[myOpenGLView addSubView:someView]这样的事情。
这是我得到的结果:

(这是一个不好的例子,因为我看的是Family Guy,但证明了视频内存缓冲区在这里被截获的事实)
正如你所看到的,它正在扭曲窗口上的一些视频内存缓冲区。现在我正在做一些调试,问题出在-setWantsLayer上。一旦我注释掉了代码中的这一行,所有的OpenGL内容都会正确显示。
这是我应该得到的:

因此,我的问题是,如何正确地显示OpenGL视图和同时显示-addSubViews
苹果公司有一个非常好的例子项目,叫做"LayerBackedOpenGLView“(http://developer.apple.com/library/mac/#samplecode/LayerBackedOpenGLView/Introduction/Intro.html),我一直在研究它,现在我不知道我在做什么不同。我确实注意到的一件事是,苹果没有使用NSOpenGLView,而是使用NSView,并将类更改为自定义类,以继承NSOpenGLView,而我使用NSOpenGLView,将类更改为自定义类,再次继承NSOpenGLView。不确定这是否会导致任何问题,但如果我将其更改为NSView,我仍然会得到相同的问题。
发布于 2011-10-02 21:55:24
我自己也有同样的问题,但通过阅读示例代码ReadMe解决了它。您需要在NSOpenGLView子类中实现-drawRect:。如果没有它,就不支持层备份。
因此,实现-drawRect并在那里进行绘图。一个恼人的事情是,你可能更好地将场景与openglview分开。这就是他们在示例代码中所做的。
https://stackoverflow.com/questions/7133290
复制相似问题