
19/02/2010, 00:20
|
| | Fecha de Ingreso: febrero-2010
Mensajes: 5
Antigüedad: 15 años, 1 mes Puntos: 0 | |
Lineas dinamicas Opnegl y C++ Hola que tal compañeros de la comunidad, estoy iniciando en el mundo de OpenGL y mi problema es el siguiente, tengo una ventana y cuando hago clic sobre ésta dibujo lineas las cuales cambian de tamaño y dirección dependiendo del movimiento del mouse (estilo MS paint), tengo la mayor parte del trabajo hecho, el problema es que cuando muevo el mouse el programa deja una una "sombra" de la linea que se esta dibujando y que desaparece cuando suelto el botón izquierdo del mouse y no tengo idea de como hacerle para que no aparezca esta "sombra",
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;
}
|