debutant Opengl glrecti et glColor3f

debutant Opengl glrecti et glColor3f - C++ - Programmation

Marsh Posté le 19-03-2005 à 10:24:54    

:hello: ,
 
ca me dessine bien un rectangle de contour bleu, mais jaimerai qu il soit entierement bleu :/

Code :
  1. switch(type)
  2.    {
  3.         case RECTANGLE :
  4.    glColor3f(0.0, 0.0, 1.0);
  5.    glRecti(PtList[0].x, PtList[0].y,
  6.                          PtList[1].x, PtList[1].y);
  7.                          break;


 
comment faire?

Reply

Marsh Posté le 19-03-2005 à 10:24:54   

Reply

Marsh Posté le 19-03-2005 à 11:10:42    

up

Reply

Marsh Posté le 19-03-2005 à 14:43:11    

Je connais pas trop OpenGL, mais rajoute peut-être un :

Code :
  1. glPushAttrib(GL_POLYGON_BIT) ;
  2. glPolygonMode(GL_FRONT_AND_BACK, GL_FILL) ;
  3. // dessin du rectangle
  4. glPopAttrib() ;


Il me semble qu'il s'agit pourtant du comportement par défaut, peut-être que tu y a touché avant ?
 
@+

Reply

Marsh Posté le 22-03-2005 à 13:13:36    

ok sa marche pour glrecti(ect)
mais pas dans ce cas la
 

Code :
  1. glPushAttrib(GL_POLYGON_BIT) ;
  2. glPolygonMode(GL_FRONT_AND_BACK, GL_FILL) ;  //Drawrect area is white
  3. glColor3f(0.5, 0.5, 1.0);
  4. //glRecti(circle.center.x, 200,
  5. //       454, 254);
  6. glBegin(GL_LINE_LOOP);
  7.   glVertex2i(40, 125);
  8. glVertex2i(91 , 125);
  9. glVertex2i(91 , 425);
  10. glVertex2i(((40+91)/2)    , 425 + 45);
  11. glVertex2i(40,425);
  12. glEnd();
  13. glPopAttrib() ;


l interieur ne se remplie pas.
le problem viendrait t il de la ? GL_POLYGON_BIT
merci

Reply

Marsh Posté le 22-03-2005 à 17:19:44    

La c'est normal tu utilises une primitive de type ligne, donc GL trace des lignes. PolygonMode modifie le comportement du rasterizer, il ne change pas la nature des primitives (meme si le résultat peut le laisser croire).
 
Note : vu qu'il s'agit d'une LINE_LOOP, le tracé est fermé automatiquement entre la premiere et la derniere vertex, donc le deuxieme glVertex2i(40,425); est inutile.

Reply

Marsh Posté le 22-03-2005 à 22:14:23    

y a til moyen de coloriser la forme ? parceque j utilise lini loop pour dessiner un cercle :/

Reply

Marsh Posté le 22-03-2005 à 22:33:01    

Utilise glBegin(GL_POLYGON) peut-être ?
Le glPolygonMode sera alors pris en compte.
 
Du genre :

Code :
  1. // on sauve la couleur courante, entre autres
  2. glPushAttrib(GL_CURRENT_BIT) ;
  3. /*
  4.    remplit le polygone suivant en rouge ou juste son contour
  5.    suivant glPolygonMode
  6. */
  7. glColor3f(1.f, 0.f, 0.f) ;
  8. glBegin(GL_POLYGON);
  9.     glVertex2i(40, 125);
  10.     glVertex2i(91 , 125);
  11.     glVertex2i(91 , 425);
  12.     glVertex2i(((40+91)/2)    , 425 + 45);
  13.     glVertex2i(40,425);
  14. glEnd();
  15. glPopAttrib() ; // on revient dans l'état précédent


Message édité par Evadream -jbd- le 22-03-2005 à 22:36:58
Reply

Marsh Posté le 22-03-2005 à 22:35:36    

weeee ca marche merci

Reply

Marsh Posté le 22-03-2005 à 23:53:56    

pour info : en regle générale, GL_POLYGON est à proscrire. Tu forces l'implementation à effectuer une triangulation (ce qui n'est pas forcément trivial et est relativement lent). Il vaut mieux utiliser directement des triangles ou des quads (en version discrete ou connectée (strip ou fan)). Si c'est juste pour essayer comme ça c'est pas dramatique hein, mais c'est pas une bonne habitude à prendre. Pour un disque, GL_TRIANGLE_FAN me semble un bon candidat.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed