TP4 : Interaction avec l´utilisateur
Sources :2007/TP/TP4-src.zip
Exécutables pour Windows :2007/TP/TP4-win32exe.zip
#include "glut_import.h" /********************************************************************* * GLOBAL DATA *********************************************************************/ #define MAX_COUNT 10000 struct { int Count; int Points[MAX_COUNT][2]; } Data={ 0 }; /********************************************************************* * GLUT CALLBACKS *********************************************************************/ void reshapeFunc(int width,int height){ glViewport(0,0,width,height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0,width,height,0); } void displayFunc(void){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glBegin(GL_LINE_STRIP); for (int i=0;i<Data.Count;i++) glVertex2iv(Data.Points[i]); glEnd(); glFlush(); glutSwapBuffers(); } void mouseFunc(int button,int state,int x,int y){ if (state==GLUT_DOWN) Data.Count=0; glutPostRedisplay(); } void motionFunc(int x,int y){ if (Data.Count<MAX_COUNT){ Data.Points[Data.Count][0]=x; Data.Points[Data.Count][1]=y; Data.Count++; } glutPostRedisplay(); } /********************************************************************* * MAIN PROGRAM *********************************************************************/ int main(int argc,char *argv[]){ int a=800,b=600,x,y; glutInit(&argc,argv); x=glutGet(GLUT_SCREEN_WIDTH); y=glutGet(GLUT_SCREEN_HEIGHT); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowPosition((x-a)/2,(y-b)/2); glutInitWindowSize(a,b); glutCreateWindow("Drawing"); glutReshapeFunc(reshapeFunc); glutDisplayFunc(displayFunc); glutMouseFunc(mouseFunc); glutMotionFunc(motionFunc); glutMainLoop(); }
Dernière modification le 18/3/2010
Ce document a été traduit de LaTeX par HeVeA