Les dejo mi código (compilado en Visual C++) y espero su amable ayuda.
Código:
#include <glut.h> #include <vector> using namespace std; #define ALTO 600 #define ANCHO 400 struct Punto{ GLdouble x; GLdouble y; }punto; int Cordx,Cordy; bool band = false; vector<Punto> puntos; void MovMouse(GLsizei x,GLsizei y){ if(band == true){ Cordx = (GLdouble)x; Cordy = ALTO - (GLdouble)y; glLineWidth(2.0); glBegin(GL_LINES); glVertex2d(punto.x,punto.y); glVertex2d(Cordx,Cordy); glEnd(); glFlush(); } } void raton(int boton,int estado,int x,int y){ if(boton == GLUT_LEFT_BUTTON){ if(estado == GLUT_DOWN){ band = true; punto.x = x; punto.y = ALTO-y; puntos.push_back(punto); } else if(estado == GLUT_UP){ band = false; punto.x = x; punto.y = ALTO-y; puntos.push_back(punto); } } glutPostRedisplay(); } void Dibuja(void){ glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0,1.0,1.0); glLineWidth(2.0); glBegin(GL_LINES); for(int i=0;i<puntos.size();i++){ glVertex2d(puntos[i].x,puntos[i].y); } glEnd(); glFlush(); } void inicializa(){ glClearColor(0.0,0.0,0.0,0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0,ANCHO,0,ALTO); } int main(int argc, char **argv){ glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); glutInitWindowSize(ANCHO,ALTO); glutInitWindowPosition(100,50); glutCreateWindow("Puntos OpenGL"); inicializa(); glutDisplayFunc(Dibuja); glutMouseFunc(raton); glutMotionFunc(MovMouse); glutMainLoop(); return 0; }