2010-06-01 8 views
0

J'essaie de vérifier que mon NSOpenGLView a un contexte valide mais il semble qu'un appel à openGLContext ne m'aidera pas à comprendre cela. openGLContext semble toujours retourner un NsOpenGlContext (il retourne le contexte actuel si la vue en a un et sinon il crée un contexte et le renvoie). Y a-t-il une autre méthode que je pourrais utiliser à la place?Déterminer si un NSOpenGLView a un contexte valide (Cocoa OSX)

Répondre

4

Les contextes OpenGL sont sélectionnés par thread. NSOpenGLView vous indiquera quel contexte doit être utilisé pour dessiner dans la vue (c'est-à-dire celui auquel [context setView: view] a été appelé), mais pas quel contexte est actuellement sélectionné dans le thread qui exécute le code. C'est un peu comme choisir un stylo/pinceau pour dessiner dans un ancien Windows.

Je comprends que vous voulez savoir si vous pouvez dessiner en vue. Pour ce faire, vérifiez si le contexte actuel est celui que NSOpenGLView renvoie, et si ce n'est pas le cas, définissez-le.

Pour obtenir contexte OpenGL en cours pour le fil:

NSOpenGLContext* context = [NSOpenGLContext currentContext]; 

Pour définir un comme courant:

[context makeCurrentContext]; 

Pour effacer le contexte actuel (ie pas fixé de contexte actuel.):

[NSOpenGLContext clearCurrentContext]; 

En général, consultez la documentation de NSOpenGLContext.

Questions connexes