Prog en opengl

Signaler
Messages postés
6
Date d'inscription
dimanche 8 juin 2008
Statut
Membre
Dernière intervention
20 juin 2008
-
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
-
salut tt le monde
je veux dessiner des points en cliquant par la souris sur ma fenêtre. mais mon prog ne marche pas. est ce que qlq'1 peut m'aider?
voici mon prog:
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
using namespace std;


static int c = 0 ;
void mouse(int bouton,int etat,int x,int y) {
FILE *stream;
 stream = fopen("point.txt", "w");
 stream = fopen("point.txt", "a");


  if ( etat == GLUT_DOWN )


    switch ( bouton ) {
      case GLUT_LEFT_BUTTON  : 
                               printf("%4d %4d\n",x,y);
                               fprintf(stream,"%4d %4d\n",x,y);
                              glBegin (GL_POINTS);
                             glColor3f(0, 0, 0);
                            glPointSize (32.0); 
                            glVertex2i(x,y);
                           glEnd();
                          glFlush(); 
                          glutSwapBuffers();
                            break ;
        fclose(stream);
        glutPostRedisplay();
    
      case GLUT_RIGHT_BUTTON : exit(0);
                               break; }
}
 
void display(void) {
  glClearColor(1, 1, 0, 0) ;
  glClear(GL_COLOR_BUFFER_BIT) ;
  glOrtho(-1.0,1.0,-1.0,1.0,
          -1.0,1.0);  
    glPushMatrix();
    glFlush();
}


int main(int argc,char **argv) {
 
  glutInit(&argc,argv);
  glutInitWindowSize(400,400);
  glutInitWindowPosition(100,100);
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  glutCreateWindow("Clics de souris") ;      
  glutDisplayFunc(display) ;
  glutMouseFunc(mouse) ; glutMainLoop() ;
  return(0);
}

4 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Ca marche pas comme ca openGL, glut non plus. Tu n'as pas le droit de dessiner en dehors de la fonction "display". Faut stocker les points à afficher dans des tableaux puis les tracer à chaque frame.
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

Mdr, ya a peine une heure je me suis dit "tiens se serais marrant de faire un programme Opengl qui desisne des formes selon l'emplacement de la souris"
Et la je trouve se post XD
Messages postés
6
Date d'inscription
dimanche 8 juin 2008
Statut
Membre
Dernière intervention
20 juin 2008

wé luthor j'ai lu un tutoriel sur opengl ce matin et je me suis rendu compte que le code du dessin des points doit être ds la fonction d'affichage.


mais pourriez vs m'expliquer un peu plus comment récupérer mes points dans un tableau?
merci d'avance
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Tu créés une liste en variable globale.

void mouse(int bouton,int etat,int x,int y)
{
if ( etat == GLUT_DOWN )
{
switch ( bouton )
{
        case GLUT_LEFT_BUTTON  :
        Ajouter point (x,y) à la fin de la liste de points.
        glutPostRedisplay();
       break;  

      case GLUT_RIGHT_BUTTON : exit(0);
      break;
}
}
}
void display(void) {
  glClearColor(1, 1, 0, 0) ;
  glClear(GL_COLOR_BUFFER_BIT) ;
  glOrtho(-1.0,1.0,-1.0,1.0,
          -1.0,1.0); 

   glBegin(GL_POINTS);

    pour chaque point de la liste:
    glVertex(element[i].x, element[i].y);
    glEnd();

    glFlush();
}

Sinon, il y a d'autres erreurs dans ton programme:

Ici:
stream = fopen("point.txt", "w");
stream = fopen("point.txt", "a");

Et le "PushMatrix()" qui n'a aucun sens et qui génère des erreurs opengl.