OpenGLView не отображается

Я следовал этому руководству.

В то время как я искренне не смог понять, что он говорит в пункте 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 ответ

Решение

Вы, вероятно, segfaulting, потому что OpenGL пытается изменить некоторое состояние в текущем контексте, пока нет текущего контекста (потому что вы отправили -drawRect: без предварительной установки текущего контекста).

Вы никогда не должны отправлять -drawRect: сам. Вместо этого используйте -setNeedsDisplay и пусть Какао установить текущий контекст и отправить -drawRect: для тебя:

- (void)awakeFromNib {
  self.needsDisplay = YES;
}
Другие вопросы по тегам