Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Lineas dinamicas Opnegl y C++

Estas en el tema de Lineas dinamicas Opnegl y C++ en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/02/2010, 00:20
 
Fecha de Ingreso: febrero-2010
Mensajes: 5
Antigüedad: 14 años, 2 meses
Puntos: 0
Sonrisa 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;
}

Etiquetas: c++, opengl
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:52.