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

opengl transformar coordenadas de windows a opengl coordenadas

Estas en el tema de opengl transformar coordenadas de windows a opengl coordenadas en el foro de C/C++ en Foros del Web. tengo un procedimiento que captura las coordenadas de la pantalla esto me devuelve un numero entero, ahora deseo tranformarlo a opengl coordenadas para poder utilizarlo ...
  #1 (permalink)  
Antiguo 10/12/2011, 00:49
 
Fecha de Ingreso: enero-2009
Mensajes: 178
Antigüedad: 15 años, 10 meses
Puntos: 2
Pregunta opengl transformar coordenadas de windows a opengl coordenadas

tengo un procedimiento que captura las coordenadas de la pantalla esto me devuelve un numero entero, ahora deseo tranformarlo a opengl coordenadas para poder utilizarlo en la funcion glTranslatef(x,y,z) de glut

Coloco el codigo de la captura de las coordenadas de la pantalla

void mouse(int button, int button_state, int posx, int posy )
{
if ( button == GLUT_LEFT_BUTTON && button_state == GLUT_DOWN ) {
x=(float)posx; // entero que contiene la coordenada en x
y=(float)posy;// entero que contiene la coordenada en y
}
}
  #2 (permalink)  
Antiguo 15/12/2011, 09:46
 
Fecha de Ingreso: enero-2009
Mensajes: 178
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: opengl transformar coordenadas de windows a opengl coordenadas

Lo consegui

void Mouse(int button,int state,int x,int y) {
GLdouble ox=0.0,oy=0.0,oz=0.0;
GLint viewport[4];
GLdouble modelview[16],projection[16];
GLfloat wx=x,wy,wz;

if(state!=GLUT_DOWN)
return;
if(button==GLUT_RIGHT_BUTTON)
exit(0);
glGetIntegerv(GL_VIEWPORT,viewport);
y=viewport[3]-y;
wy=y;
glGetDoublev(GL_MODELVIEW_MATRIX,modelview);
glGetDoublev(GL_PROJECTION_MATRIX,projection);
glReadPixels(x,y,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,& wz);
gluUnProject(wx,wy,wz,modelview,projection,viewpor t,&ox,&oy,&oz);
glutPostRedisplay();
printf ("World (%f, %f, %f)\n", ox, oy,oz);
}
donde las variables son ox, oy, oz

Etiquetas: c++, gltranslatef, glui, glut, gui, 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 16:17.