Question

Quand un GLKView est redimensionnée, il y a des opérations derrière les scènes qui se déroulent sur les tampons et le contexte de cette GLKView. Pendant le temps qu'il faut pour effectuer ces opérations derrière les coulisses, le dessin au GLKView ne produit pas des résultats corrects.

Dans mon scénario, j'ai un GLKView qui a permis setNeedsDisplay, de sorte que chaque fois que je dois mettre à jour le contenu de celui-ci sur l'écran, je viens d'appeler -setNeedsDisplay sur cette GLKView. J'utilise GLKView pour dessiner des images, donc si je dois dessiner une image avec une taille différente, je dois aussi changer la taille de la GLKView.

Le problème: Lorsque je change la taille de la GLKView et appel setNeedsDisplay sur ce point de vue, le résultat à l'écran est incorrect. En effet, le GLKView ne se fait pas terminé les opérations derrière les scènes invoquées par le nouveau changement de taille avant d'essayer de dessiner la nouvelle image.

J'ai trouvé un travail autour de cela en appelant: performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0 au lieu de simplement setNeedsDisplay sur le GLKView. Cela force le thread principal d'attendre toutes les opérations openGL les coulisses de l'arrière-être terminée avant d'appeler setNeedsDisplay. Bien que cela fonctionne bien, je me demande s'il y a une meilleure solution. Par exemple, est-il un appel openGL pour faire le fil d'attente pour toutes les opérations openGL à remplir avant de continuer?

Était-ce utile?

La solution

La solution a consisté à remettre l'objet CIContext après la GLKView a été redimensionnée.
Merci pour rien, tout le monde!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top