OpenGLView无法显示

时间:2012-04-09 00:30:30

标签: objective-c opengl nsopenglview

我已关注this guide

虽然我真的没有理解它在第13点所说的内容,但我只是打开了检查员的窗格,但它没有说出要设置的属性。 但是,我已经在适当的类中复制并粘贴了代码。 但它看起来是一个普通的窗口,没有三角形绘制,就像我在Objective-C中创建一个有空窗口的普通程序一样。

编辑:

我认为问题是窗口的初始化,所以我编写了一个awakeFromNib方法来使drawRect方法启动:

- (void) awakeFromNib
{
    NSRect rect=NSMakeRect(100.0, 100.0, 100.0, 100.0);
    [self drawRect: rect];
}

但是在drawRect的第一条指令中,我得到了一个EXC_BAD_ACCESS异常

glClearColor(0, 0, 0, 0);

也许窗口没有正确初始化?

1 个答案:

答案 0 :(得分:1)

你可能是segfaulting,因为当没有当前上下文时,OpenGL会尝试更改当前上下文中的某些状态(因为你在没有先设置当前上下文的情况下发送了-drawRect:)。

您不应该自己发送-drawRect:而是使用-setNeedsDisplay并让Cocoa设置当前上下文并为您发送-drawRect:

- (void)awakeFromNib {
  self.needsDisplay = YES;
}