Hola a todos/as.

Intento hacer zoom en una ventana creada mediante OpenGL.

Para ello he creado una función llamada:

void  raton_click (int boton, int estado_boton, int x, int y);


la quiero utilizar cunado se detecta algún evento en el ratón, para ello:

glutMouseFunc (raton_click);


Dentro de la función mouse_click, tengo:

void  raton_click (int boton, int estado_boton, int x, int y) {

    if ((boton == GLUT_MIDDLE_BUTTON) && (estado_boton == GLUT_DOWN)){
        zoom *+=* 0.20;
        glViewport (0, 0, zoom, zoom);
        glutPostRedisplay();
    }

 }


He leído que glViewport es para fijar vistas:

void glViewport (GLint x, GLint y, GLsizei ancho, GLsizei alto)

Los parámetros x e y especifican la esquina inferior izquierda de la vista
dentro de la ventana, y los parámetros ancho y alto especifican las
dimensiones en pixels.
http://www.alobbs.com/revistas/opengl2

Pero algo falla, es decir, hacer zoom hace, pero a la vez que me hace zoom
me desplaza los objetos hacia un lado y llega un momento que desaparecen.

Para corregir lo anterior pensé hacer dentro de la función raton_click:

if ((boton == GLUT_RIGHT_BUTTON && (estado_boton == GLUT_DOWN)){
        zoom -*=* 0.20;
        glViewport (0, 0, zoom, zoom);
        glutPostRedisplay();
    }


Pero al hacer esto me hace los objetos más pequeños pero igualmente me los
lleva para el otro lado.

¿Alguno de ustedes se ha viso en la situación de hacer zoom mediante OpenGl?
Me conformaría si los objetos no se moviesen para los lados.

Agradecería cualquier ayuda.



Un saludo amigos.
_______________________________________________
CRySoL mailing list
http://crysol.inf-cr.uclm.es/
https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol

Responder a