Open GL - capturar coordenadas del mouse

 
Vista:

capturar coordenadas del mouse

Publicado por Lien (2 intervenciones) el 25/03/2005 21:33:53
necesito capturar las coordenadas del mouse y luego guardarlas en 1 variable............para poder dibujar, algo parecido a 1 paint
mil gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

un ejemlo mama guiate or eso

Publicado por Osmani Bayard Matos (1 intervención) el 27/06/2006 04:32:54
#include <GL/glut.h>

#include <stdio.h>

#include "raton.h"


/******************************************************************************************/

/* Funcion de dibujado */

/* Parametros: Ninguno */

/* Salida: Ninguna */

/******************************************************************************************/

void Dibuja(void)

{

/* Dibuja un segmento de linea entre el punto incial y el final */

glBegin (GL_LINES);

glVertex2i (InicioX, VentanaAlto-InicioY);

glVertex2i (FinX, VentanaAlto-FinY);

glEnd ();


/* Se asegura de que se ejecutan todas las ordenes */

glFlush ();

}



/******************************************************************************************/

/* Establece el area visible y el tipo de proyeccion */

/* Parametros: int ancho --> Ancho del area visible */

/* int alto --> Alto del area visible */

/* Salida: Ninguna */

/******************************************************************************************/

void TamanyoVentana (int ancho, int alto)

{

glMatrixMode(GL_PROJECTION); /* Activamos la matriz de proyeccion */

glLoadIdentity(); /* la iniciamos con la matriz identidad */

glOrtho(0.0, ancho, 0.0, alto, -1.0, 1.0); /* establecemos los parametros de la proyeccion */

glViewport (0, 0, ancho, alto); /* establecemos los parametros del area de dibujo */

VentanaAncho = ancho; /* guardamos el ancho y alto de la ventana */

VentanaAlto = alto;

glClear (GL_COLOR_BUFFER_BIT); /* borramos la ventana */

InicioX = InicioY = FinX = FinY = Pulsaciones = 0; /* Inica las variables */

}



/******************************************************************************************/

/* Abre una ventana OpenGL */

/* Parametros: int numeroArgumentos --> El numero de argumentos en la llamada al programa */

/* char ** listaArgumentos --> Vector de cadenas con cada argumento */

/* Salida: Ninguna */

/******************************************************************************************/

void AbreVentana (int numeroArgumentos, char ** listaArgumentos)

{

glutInit(&numeroArgumentos, listaArgumentos);

glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);

glutInitWindowSize (VentanaAncho, VentanaAlto);

glutInitWindowPosition (VentanaX, VentanaY);

glutCreateWindow (listaArgumentos[0]);

glutDisplayFunc (Dibuja);

glutReshapeFunc (TamanyoVentana);

glClearColor (0.0f, 0.0f, 0.0f, 0.0f); /* Establece el color de borrado */

glClear (GL_COLOR_BUFFER_BIT); /* Borra el buffer de color */

glColor3f (1.0f, 1.0f, 1.0f); /* Establece el color de dibujo */

}



/******************************************************************************************/

/* Define las acciones tras una pulsacion del teclado */

/* Parametros: unsigned char key --> Codigo de la tecla pulsada */

/* int x --> Coordenada x del cursor en el momento de pulsar la tecla */

/* int y --> Coordenada y del cursor en el momento de pulsar la tecla */

/* Salida: Ninguna */

/******************************************************************************************/

void TecladoCallback (unsigned char tecla, int x, int y)

{

switch (tecla)

{

case 27 : /* Codigo de la tecla de Escape */

exit (0);

break;


case 'r' :

glColor3f (1.0f, 0.0f, 0.0f);

break;


case 'g' :

glColor3f (0.0f, 1.0f, 0.0f);

break;

}

}



/******************************************************************************************/

/* Funcion de callback de las acciones del raton */

/* Parametros: int boton --> Codigo del boton que se ha pulsado */

/* int estado --> Estado del boton */

/* int x --> Coordenada x del cursor en el momento de pulsar la tecla */

/* int y --> Coordenada y del cursor en el momento de pulsar la tecla */

/* Salida: Ninguna */

/******************************************************************************************/

void RatonCallback (int boton, int estado, int x, int y)

{

if (boton == GLUT_LEFT_BUTTON && estado == GLUT_DOWN)

{

if (Pulsaciones % 2 == 0) /* Si el numero de pulsaciones es par, el punto es el inicial */

{ /* del segmento */

InicioX = x;

InicioY = y;

}

else

{

FinX = x;

FinY = y;

glutPostRedisplay ();

}

Pulsaciones ++;

}

}



/******************************************************************************************/

/* Inicia las funciones de callback */

/* Parametros: Ninguno */

/* Salida: Ninguna */

/******************************************************************************************/

void IniciaFuncionesCallback (void)

{

glutKeyboardFunc (TecladoCallback);

glutMouseFunc (RatonCallback);

}



/******************************************************************************************/

/* Funcion principal */

/* Parametros: int numeroArgumentos --> El numero de argumentos en la llamada al programa */

/* char ** listaArgumentos --> Vector de cadenas con cada argumento */

/* Salida: Un entero que se devuelve al sistema al acabar la ejecucion del programa */

/******************************************************************************************/

int main(int numArgumentos, char ** listaArgumentos)

{

/* Crea la ventana de la aplicaci¢n */

AbreVentana (numArgumentos, listaArgumentos);

IniciaFuncionesCallback ();


/* Establece el bucle principal de control de OpenGL */

glutMainLoop();


return (0);

}





#ifndef OCUADRADO_H

#define OCUADRADO_H


/* Variables Globales del modulo */

int VentanaAncho = 500, VentanaAlto = 500; /* Tamanyo de la ventana */

int VentanaX = 100, VentanaY = 100; /* Posicion de la ventana */

int Pulsaciones; /* Numero de pulsaciones del boton izquierdo del raton */

int InicioX, InicioY; /* Coordenadas del punto inicial */

int FinX, FinY; /* Coordenadas del punto final */


/* Abre una ventana OpenGL */

void AbreVentana (int numeroArgumentos, char ** listaArgumentos);


/* Funcion de dibujado */

void Dibuja(void);


/* Establece el area visible */

void TamanyoVentana (int alto, int ancho);


/* Inicia las funciones de Callback */

void IniciaFuncionesCallback (void);


/* Define las acciones tras una pulsacion del teclado */

void TecladoCallback (unsigned char tecla, int x, int y);


/* Funcion de callback de las acciones del raton */

void RatonCallback (int boton, int estado, int x, int y);


#endif
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar