Hi,
ich programmiere gerade etwas in OpenGL und will User Interaktion ermoeglichen. Ich will, wenn der User die Maus bewegt, ein Zielkreuz darstellen. Das Problem ist, dass ich beim bewegen der Maus einen 2D Punkt bekomme. Wie kann ich diesen moeglichst einfach in einen 3D Punkt umrechnen?
Ich hab ein ähnlichliches Problem. GluUnProject macht nicht ganz, was ich will.
CVector3 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 CVector3(posX, posY, posZ);
}
Mein Viewport: 0,0,400,400
GluPerspective: 60,1,1,10000
gluLookAt: 10,10,30,11,10,31,0,1,0
Mein Problem ist, dass ich sehr hohe Zahlenwerte bekommen, wenn ich die Maus bewege. Bei dem Punkt 240,47 erhalte ich 6036.16 , 4426.44,7693.04.
Woran liegt das?
vBulletin®, Copyright ©2000-2024, Jelsoft Enterprises Ltd.