Fecha y hora actual: Miércoles 19 Dic 2018 01:54
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

OpenGL: Obtener posicion del raton

Responder al Tema

Índice del Foro > Programación de juegos o videojuegos > OpenGL: Obtener posicion del raton

Autor Mensaje
unsigned char*
Usuario Activo


Registrado: 03 Abr 2012
Mensajes: 599
Ubicación: Aqui

Mensaje Publicado: Domingo 15 Sep 2013 18:11

Título del mensaje: OpenGL: Obtener posicion del raton

Responder citando

Buenas, tengo un problema...

Para obtener las coordenadas del raton dentro de la escena uso:
Código:

sf::Vector3f CPictureSelector::GetOGLPos(int x, int y)
{
    GLint viewport[4];
    GLdouble modelview[16];
    GLdouble projection[16];
    GLfloat winX, winY, winZ;
    GLdouble posX, posY, posZ;

    glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
    glGetDoublev( GL_PROJECTION_MATRIX, projection );
    glGetIntegerv( GL_VIEWPORT, viewport );

    winX = (float)x;
    winY = (float)viewport[3] - (float)y;

    glReadPixels(x, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ);

    gluUnProject(winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ);

    return sf::Vector3f(posX, posY, posZ);
}


El tema de este codigo, es que cuanto mas lejos ponga la profundidad de campo... mas locos se vuelven los resultados obtenidos por la funcion anterior....

Cuando tengo esto:
Código:

    glFrustum(-ratio, ratio, 1.f, -1.f, 1.f, m_Zoom);

    gluLookAt(getSize().x/2-200/m_NumCubes, getSize().y/2-200/m_NumCubes, m_Zoom,
          getSize().x/2-200/m_NumCubes, getSize().y/2-200/m_NumCubes, 0,
          0, 1, 0);


Todo funciona correctamnte, aunque la profundiad es 0... (Como podreis apreciar en el video... los cubos se cortan con el fondo negro):




Si pongo algo como esto:
Código:

    glFrustum(-ratio, ratio, 1.f, -1.f, 1.f, 1500.0f);

    gluLookAt(getSize().x/2-200/m_NumCubes, getSize().y/2-200/m_NumCubes, m_Zoom,
          getSize().x/2-200/m_NumCubes, getSize().y/2-200/m_NumCubes, 0,
          0, 1, 0);


Los resultados devueltos por la funcion que calcula la posicion del raton... son incorrectos.... es como si a mayor profundidad mayor movimiento del raton.



¿Como deberia hacer para cacular la posicion del raton teniendo en cuenta la profundidad de la escena? Gracias!


++++++++++[>++++++++>++++++++>++++>+++<<<<-]>+++++.>--.<--.>-----.--.+++++++.---------.-.>>++.<<-.+++++.-------.<-.>>++.
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

¿como puedo obtener un dato de un radiobutton

jose mansilla Programación para dispositivos móviles 0 Jueves 27 Sep 2018 16:08 Ver último mensaje
El foro no contiene ningún mensaje nuevo

como obtener una contraseña que ha sido olvidada

zendit PHP 2 Martes 23 Feb 2016 15:15 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Obtener datos de un JTable especifico

ShamanHero Java 6 Miércoles 27 Ene 2016 20:01 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Error al obtener datos de otra base de datos FI...

fcc117 Otras bases de datos 0 Lunes 23 Feb 2015 19:56 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Obtener "longitud" y "latitud&qu...

OchoaPHP JavaScript 1 Viernes 16 Ene 2015 05:02 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,