[OpenGL] Masquer une partie d'un polygone

Le côté programmation du développement d'un jeu vidéo.

Masquer une partie d'un polygone

Messagepar aselius » 11 Nov 2010, 16:01

Bonjour,

Je débute en OpenGL.

J'ai un GL_QUADS sur lequel j'ai appliqué une texture, le tout compilé dans une liste. J'aimerais pouvoir masquer une zone rectangulaire du polygone. Est-ce possible ? Et si oui comment ?

Le glScissor ne me convient pas parce que j'applique des transformations au polygone (translation et mise à l'échelle), et ces transformations ne s'appliquent pas au glScissor.
aselius
Hello World, I'm new !
 
Messages: 11
Inscription: 10 Nov 2010, 15:55

Messagepar Kremtak » 11 Nov 2010, 18:11

Salut,

Tu peux utiliser le stencil buffer, pour masquer une partie de l'affichage. Tu dois pouvoir trouver des tutos sur le net.

si tu as besoin d'aide n'hésite pas
But there's no sense crying over every mistake
You just keep trying until you run out of cake
Avatar de l’utilisateur
Kremtak
Hello World, I'm new !
 
Messages: 167
Inscription: 12 Déc 2007, 23:27
Localisation: Aubagne

Messagepar aselius » 12 Nov 2010, 16:07

Bonjour,

Un grand merci "Kremtak" ! C'est excellent.

Voici un exemple avec lequel je suis parvenu à dessiner seulement la partie du sprite qui est en intersection avec un cercle :

Code: Tout sélectionner
glEnable(GL_TEXTURE_2D);
   glDisable(GL_DEPTH_TEST);
   glEnable(GL_STENCIL_TEST);
   glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
   glStencilFunc(GL_ALWAYS, 1, 0xffffffff);
   // Dessin du masque : un cercle en x=800 et y=600 et de rayon 120 pixels
   GlPrimitive.fillCircle(800, 600, 120);
   // ----------------------------------------
   glEnable(GL_DEPTH_TEST);
   glStencilFunc(GL_EQUAL, 1, 0xffffffff);
   glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
   // dessin du polygone en x=800 et y=600
   this.sprite.display(800, 600);
   // ----------------------------------------
   glDisable(GL_STENCIL_TEST);
   glDisable(GL_DEPTH_TEST);
glDisable(GL_TEXTURE_2D);
aselius
Hello World, I'm new !
 
Messages: 11
Inscription: 10 Nov 2010, 15:55


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités

cron