PDA

View Full Version : mouse dragging - help



fox
01-25-2001, 12:30 AM
I have the following code for mouse dragging but it isn't working - help

GLint viewport[4];
GLdouble modelMatrix[16];
GLdouble projMatrix[16];

GLdouble winx =1.0f, winy=-1.5, winz=-1.5;

glGetIntegerv(GL_VIEWPORT, viewport);
glGetDoublev(GL_MODELVIEW_MATRIX, modelMatrix);
glGetDoublev(GL_PROJECTION_MATRIX, projMatrix);

//get 2D projection of cube
GLdouble xScreen, yScreen, zScreen;
gluProject(winx, winy, winz,modelMatrix, projMatrix, viewport, &xScreen, &yScreen, &zScreen);

x =(int)xScreen;
y = (int)yScreen;

//offset to allow pixel block to be centred around actual position
xScreen -=0.5f;
yScreen -=0.5f;

//do inverse transform
double xWorld, yWorld, zWorld;
gluUnProject(xScreen, yScreen, zScreen, modelMatrix, projMatrix, viewport, &xWorld, &yWorld, &zWorld);
float depth;
int nPixelSize = 3;
glRasterPos3f((float)xWorld, (float)yWorld, (float)zWorld);
glDrawPixels(nPixelSize, nPixelSize, GL_RGB, GL_FLOAT, &depth);

I wanting to also ask - with mouse dragging you should be able to select and drag an object - at the moment I have this as a separate function to rotation, zooming etc. is this right?

cheers

chennes
01-25-2001, 10:23 AM
What is the advantage of using the gluUnproject to accomplish this instead of the selection buffer? It was fairly easy to do using the select buffer, but for a big scene, it can become prohibitively slow... I've never looked into using unproject.

Chris

fox
01-25-2001, 11:35 PM
Hi Chris
well I had implemented a version of selection buffer which worked - it actually output message of which object was selected - but i couldn't go beyond that i.e. select an object and then use my rotate, zoom, or pan code - maybe I'll e-mail you some code to have a look

cheers