begin process at 2008 08 20 17:05:40
1 228 954 membres
315 nouveaux aujourd'hui
14 259 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : prog en opengl [ Linux / OpenGL ] (wildTiger)

prog en opengl le 19/06/2008 22:33:08

wildTiger

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);
}


Re : prog en opengl le 20/06/2008 00:06:39

luhtor
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.

Re : prog en opengl le 20/06/2008 10:12:43

faucheuse
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

Re : prog en opengl le 20/06/2008 13:42:36

wildTiger

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


Re : prog en opengl le 20/06/2008 18:10:33

luhtor
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.




Classé sous : int, prog, include, stream, glut

Participer à cet échange

Livres en rapport

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS