Bonjour,
je teste OpenGL sous cocoa (sous Delphi XE2) et je rencontre un problème pour lequel je ne trouve pas de solution satisfaisante.
j'ai un NSOpenGLView avec ses méthodes "prepareOpenGL" et "drawRect:" qui me permettent d'affiche ce que je veux. Mais cet affichage est fonction du temps, je veux donc forcer une réaffichage "aussi souvent que possible" pour avoir une animation.
typiquement, sous Windows j'invoque InvalidateRect() à la fin du message WM_PAINT pour redessiner ma fenêtre en boucle.
Or, si j'invoque "setNeedsDisplay: YES" à la fin de la méthode "drawRect:" ma fenêtre ne se redessine pas.
Je ne veux pas utiliser un Timer qui forcerait une périodicité, je veux que mon application affiche l'image "aussi souvent que possible", indiquer que le contenu doit être redessiné me semble être l'approche la plus douce...mais elle ne fonctionne pas.
Une solution serait aussi d'avoir un événement "Idle", sous Windows c'est un traitement qu'on lance quand la pile de message est vide et que l'application n'a rien à faire... existe-il l'équivalent dans NSApplication ?
EDIT: j'ai tenté un "setNeedsDisplay: YES" dans "applicationDidUpdate:" mais ça ne fonctionne pas non plus ! Alors que si je l'invoque depuis un bouton ça fonctionne...
EDIT: en fait si ça fonctionne avec "applicationDidUpdate:" mais pas en boucle, il faut que je bouge la souris par exemple...
Partager