Hi
I tried replicating the article at:
http://nehe.gamedev.net/data/articles/article.asp?article=13
in trying to map mouse coor. to scene coor.
However, when I run the code I get the exception:
javax.media.opengl.GLException: pack pixel_buffer_object must be enabled to call this method
and was wondering if anyone has experience with using glReadPixels() in JOGL.
Graham
======
public static Vector3D screenCoordinatesToOpenGLCoordinates(GL gl, int screenX, int screenY)
{
// viewport
int[] viewport = new int[4]; // Where The Viewport Values Will Be Stored
gl.glGetIntegerv(GL.GL_VIEWPORT,viewport,0); // Retrieves The Viewport Values (X, Y, Width, Height)
// modelview
double[] modelview = new double[16]; // Where The 16 Doubles Of The Modelview Matrix Are To Be Stored
gl.glGetDoublev(GL.GL_MODELVIEW_MATRIX, modelview,0); // Retrieve The Modelview Matrix
// projection
double[] projection = new double[16]; // Where The 16 Doubles Of The Projection Matrix Are To Be Stored
gl.glGetDoublev(GL.GL_PROJECTION_MATRIX, projection,0); // Retrieve The Projection Matrix
// Subtract The Current Mouse Y Coordinate From The Screen Height since +ve y acts downwards
screenY = viewport[3] - screenY;
// screen z
long screenZ = 0;
gl.glReadPixels(screenX, screenY, 1, 1, GL.GL_DEPTH_COMPONENT, GL.GL_INT,screenZ);
GLU glu = new GLU();
double[] pos = new double[3];
glu.gluUnProject(screenX,screenY,screenZ, modelview,0, projection,0, viewport,0, pos,0);
Vector3D posVec = new Vector3D(pos[0],pos[1],pos[2]);
return posVec;
}