gpt4 book ai didi

cocoa - -setWantsLayer 导致 NSOpenGLView 变形

转载 作者:行者123 更新时间:2023-12-03 16:20:42 27 4
gpt4 key购买 nike

这就是我想用我的 NSOpenGLView 做的事情。目前 NSOpenGLView 覆盖了窗口的整个区域,我想在 NSOpenGLView 顶部添加按钮、nsviews 和图像。我浏览了网页,发现 [myOpenGLView setWantsLayer:YES]; 允许我做 [myOpenGLView addSubView:someView] 之类的事情。

这是我得到的结果:

enter image description here

(有点糟糕的例子,因为我正在看《恶搞之家》,但证明了视频内存缓冲区在这里被拦截的事实)

正如您所看到的,它正在将一些视频内存缓冲区扭曲到窗口上。现在我正在做一些调试,问题出在 -setWantsLayer 上。一旦我在代码中注释掉该行,所有 OpenGL 内容都会正确显示。

这就是我应该得到的:

enter image description here

所以我的问题是,如何正确显示我的 OpenGL View 并同时显示 -addSubViews

Apple 有一个非常好的示例项目,名为“LayerBackedOpenGLView”( http://developer.apple.com/library/mac/#samplecode/LayerBackedOpenGLView/Introduction/Intro.html ),我已经研究它很长时间了,但我不知道我在其中做了什么不同的事情。我注意到的一件事是,Apple 没有使用 NSOpenGLView,而是使用 NSView 并将该类更改为 NSOpenGLView 的子类的自定义类,而我使用 NSOpenGLView 并将该类更改为再次 NSOpenGLView 的子类的自定义类。不确定这是否会导致任何问题,但如果我将其更改为 NSView,我仍然会遇到同样的问题。

最佳答案

我自己也遇到了同样的问题,但是通过阅读示例代码ReadMe解决了它。您需要在 NSOpenGLView 子类中实现 -drawRect: 。如果没有它,则不支持图层支持。

因此,实现 -drawRect 并在那里进行绘图。一件烦人的事情是,您最好将场景与 openglview 分开。这就是他们在示例代码中所做的。

关于cocoa - -setWantsLayer 导致 NSOpenGLView 变形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7133290/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com