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


