首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSOpenGLView将其NSOpenGLContext放在macOS 10.9上

NSOpenGLView将其NSOpenGLContext放在macOS 10.9上
EN

Stack Overflow用户
提问于 2019-02-26 18:28:16
回答 1查看 109关注 0票数 1

NSOpenGLView类具有一个读/写属性openGLContext,在我阅读文档时,getter不应该返回零:

如果接收方没有关联的上下文对象,则创建一个新的NSOpenGLContext对象。使用接收器的像素格式信息初始化新对象。

在macOS 10.13上,这似乎是正确的,但在macOS 10.9上,在我将视图添加到窗口后返回零。也就是说,如果我这样做:

代码语言:javascript
复制
NSOpenGLView* glView = [[NSOpenGLView alloc]
    initWithFrame: NSMakeRect( 0.0, 0.0, 100.0, 100.0 )
    pixelFormat: [NSOpenGLView defaultPixelFormat]];
NSLog(@"Pixel format %@, context %@", glView.pixelFormat, glView.openGLContext );

[self.host addSubview: glView];
NSLog(@"Pixel format %@, context %@", glView.pixelFormat, glView.openGLContext );

然后在第二个日志中,上下文为零。有什么解决办法吗?创建我自己的NSOpenGLContext并分配它是没有帮助的。我已经验证了主机视图是窗口的一部分,并且windowNumber是正数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-27 01:24:06

显然,在小牛中,必须设置上下文的视图以及视图的上下文。像这样的东西起作用了:

代码语言:javascript
复制
NSOpenGLPixelFormat* pf = [NSOpenGLView defaultPixelFormat];

NSOpenGLView* glView = [[[NSOpenGLView alloc]
    initWithFrame: NSMakeRect( 0.0, 0.0, 100.0, 100.0 )
    pixelFormat: pf] autorelease];

NSOpenGLContext* glc = [[[NSOpenGLContext alloc]
    initWithFormat: glView.pixelFormat shareContext: nil] autorelease];

[self.host addSubview: glView];

glc.view = glView; // the key step I was missing
glView.openGLContext = glc;
NSLog(@"Pixel format %@, context %@", glView.pixelFormat, glView.openGLContext );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54891914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档