我一直想弄明白这一点,但这是我想要做的与我的NSOpenGLView。目前,NSOpenGLView覆盖了窗口的整个区域,我想在NSOpenGLView上添加按钮,nsviews和图像。我浏览网页,发现[myOpenGLView setWantsLayer:YES];
可以让我做像[myOpenGLView addSubView:someView]
这样的事情。嗯,这是我得到的结果:-setWantsLayer导致NSOpenGLView失真?
(有点坏榜样,因为我是看家庭盖伊,但证明了一个事实,即视频内存缓冲区抵达该处拦截)
正如你所看到的,它将一些视频内存缓冲区扭曲到窗口上。现在我正在做一些调试,问题在于-setWantsLayer
。一旦我在我的代码中注释掉该行,所有的OpenGL东西都会正确显示。
(这是我应该得到......)
所以我的问题是我怎么能正确地显示我的OpenGL视图,并在同一时间-addSubViews
?
苹果有这方面的工作被称为“LayerBackedOpenGLView”(http://developer.apple.com/library/mac/#samplecode/LayerBackedOpenGLView/Introduction/Intro.html)的一个很好的例子项目,我一直在寻找它的好时机,我不知道我在里面做什么不同。我注意到的一件事是,不使用NSOpenGLView,Apple使用NSView并将类更改为子类NSOpenGLView的自定义类,同时我使用NSOpenGLView并将该类更改为自定义类,该类自动再次对NSOpenGLView进行子类化。不知道这是否会导致任何问题,但如果将其更改为NSView,我仍然会遇到同样的问题。
任何帮助,非常感谢!
嫁给我和IIIII会买youuuu cheeeewwwwwwing guuum! ;-) –