Si quieres que te haga el zoom centrado en las coordenadas del ratón, debería ser algo así como:

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 (x-(zoom/2), y-(zoom/2), zoom, zoom);
       glutPostRedisplay();
   }
}

Nacho


Manuel David Jiménez Patiño escribió:
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
begin:vcard
fn;quoted-printable:Ignacio D=C3=ADez Arias
n;quoted-printable:D=C3=ADez Arias;Ignacio
org;quoted-printable:Escuela Superior de Inform=C3=A1tica;Laboratorio ARCO
adr;dom:;;Paseo de la Universidad, 4;Ciudad Real;CR;13071
title;quoted-printable:Ingeniero T=C3=A9cnico en Inform=C3=A1tica de Sistemas
url:http://arco.esi.uclm.es
version:2.1
end:vcard

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

Responder a