Определение, имеет ли NSOpenGLView действительный контекст (Cocoa OSX) - PullRequest
0 голосов
/ 01 июня 2010

Я пытаюсь проверить, что мой NSOpenGLView имеет действительный контекст, но кажется, что вызов openGLContext не поможет мне понять это. openGLContext, кажется, всегда возвращает NsOpenGlContext (он возвращает текущий контекст, если у представления есть тот, и если нет, он создает контекст и возвращает это). Есть ли другой метод, который я мог бы использовать вместо этого?

1 Ответ

5 голосов
/ 02 августа 2010

Контексты OpenGL выбираются для каждого потока. NSOpenGLView скажет вам, какой контекст следует использовать для рисования в представлении (т. Е. В каком из них был вызван [context setView: view]), но не какой контекст в настоящее время выбран в потоке, выполняющем код. Это немного похоже на выбор пера / кисти для рисования в старых Windows.

Я понимаю, что вы хотите знать, если вы можете рисовать в поле зрения. Для этого проверьте, является ли текущий контекст тем, который возвращает NSOpenGLView, и, если нет, задайте для него значение.

Чтобы получить текущий контекст OpenGL для потока:

NSOpenGLContext* context = [NSOpenGLContext currentContext];

Чтобы установить текущее значение:

[context makeCurrentContext];

Чтобы очистить текущий контекст (т.е. не задавать текущий контекст):

[NSOpenGLContext clearCurrentContext];

В общем, см. Документы для NSOpenGLContext.

...