Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: SFML, coordonnées, draw et glClipPlanes  (Lu 2900 fois)

0 Membres et 1 Invité sur ce sujet

coco

  • Newbie
  • *
  • Messages: 26
    • Voir le profil
    • Galhmac Game Studio
SFML, coordonnées, draw et glClipPlanes
« le: Février 05, 2013, 04:22:27 pm »
Bonjour !

J'utilise les clipPlanes d'openGL pour masquer des éléments qui dépassent de leur conteneurs ( GUI ). J'ai réussi a les faire fonctionner, mais dans certains cas cela ne fonctionne pas, ou très mal.

A noter : Chaque élément de GUI est positionné en local par rapport à son parent pour l'affichage. les draw successifs déplacent la "zone de rendu" au coin supérieur gauche du conteneur, et ainsi de suite...

Je suppose que mes équations de plan sont fausses. Je me demande donc ce que j'ai mal fait.

1- Pour délimiter un objet de taille (w,h) et de position (x,y), c'est bien les équations suivantes que je dois utiliser ?

        GLdouble eq1[] = {1, 0, 0, -x};
        GLdouble eq2[] = {-1, 0, 0, x+w};
        GLdouble eq3[] = {0, 1, 0, -y};
        GLdouble eq4[] = {0, -1, 0, y+h};
 

2- Est-ce que le fait de modifier le transform des RenderStates influe sur les équations des clipPlanes ?

Merci d'avance =)


Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : SFML, coordonnées, draw et glClipPlanes
« Réponse #1 le: Février 05, 2013, 04:28:43 pm »
Citer
1- Pour délimiter un objet de taille (w,h) et de position (x,y), c'est bien les équations suivantes que je dois utiliser ?
A froid, là comme ça, ça m'a l'air bon.

Mais pourquoi ne pas utiliser glScissors, si tout ce dont tu as besoin c'est d'un rectangle 2D aligné sur les axes ?

Citer
2- Est-ce que le fait de modifier le transform des RenderStates influe sur les équations des clipPlanes ?
Il faut éplucher la documentation, mais je crois me souvenir que oui, les clip planes sont définis dans l'espace de la matrice model-vue courante, donc du sf::Transform final qui est utilisé pour dessiner tes entités. Donc a priori, tout ce que tu aurais à faire c'est virer ton x (ou bien soustraire un offset, si ton rectangle de clipping n'est pas toujours en (0, 0) en coordonnées locales).
Laurent Gomila - SFML developer

coco

  • Newbie
  • *
  • Messages: 26
    • Voir le profil
    • Galhmac Game Studio
Re : SFML, coordonnées, draw et glClipPlanes
« Réponse #2 le: Février 05, 2013, 04:44:17 pm »
Pour glScissors, probablement parce que je ne connais pas ^^. Je vais y jeter un coup d'oeil !

Pour glClipPlanes, d'après la doc :

Citer
When glClipPlane is called, equation is transformed by the inverse of the modelview matrix and stored in the resulting eye coordinates. Subsequent changes to the modelview matrix have no effect on the stored plane-equation components.

Si je comprends bien, à l'appel il convertit en "global" a partir de la vue courante. Du coup, a quel moment le transform des RenderStates est appliqué à openGL ? Lors du RenderTarget::draw ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : SFML, coordonnées, draw et glClipPlanes
« Réponse #3 le: Février 05, 2013, 04:51:28 pm »
Citer
Du coup, a quel moment le transform des RenderStates est appliqué à openGL ? Lors du RenderTarget::draw ?
Oui.

Bref, utilise glScissors :P
Laurent Gomila - SFML developer

coco

  • Newbie
  • *
  • Messages: 26
    • Voir le profil
    • Galhmac Game Studio
Re : SFML, coordonnées, draw et glClipPlanes
« Réponse #4 le: Février 05, 2013, 07:32:17 pm »
Ca semble fonctionner correctement avec un resetGLStates sur le RenderTarget avant d'activer les clip planes.

Pour le glScissor, on doit utiliser les coordonnées du RenderTarget ou celles de la RenderWindow ? Le "Windows coordinates" dans la doc me fais douter...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : SFML, coordonnées, draw et glClipPlanes
« Réponse #5 le: Février 05, 2013, 08:26:26 pm »
Je ne sais plus, j'ai jamais vraiment eu à l'utiliser.
Laurent Gomila - SFML developer