我目前正在尝试研究如何从 JOGL 获取世界坐标 - 目前无论我点击哪里,它都只返回 x = 0.0、y= 0.0 和 z = 0.0。我究竟做错了什么?
public double[] getMousePosition(int x, int y){
int viewport[] = new int[4];
double modelview[] = new double[16];
double projection[] = new double[16];
float winX, winY, winZ;
float posX, posY, posZ;
double wcoord[] = new double[4];
gl.glGetDoublev( GL2.GL_MODELVIEW_MATRIX, modelview, 0 );
gl.glGetDoublev( GL2.GL_PROJECTION_MATRIX, projection, 0 );
gl.glGetIntegerv( GL2.GL_VIEWPORT, viewport, 0 );
winX = (float)x;
winY = (float)viewport[3] - (float)y;
float[] depth = new float[1];
// gl.glReadPixels(winX, winY, 1, 1, gl.GL_DEPTH_COMPONENT, GL2.GL_FLOAT, depth);
boolean test = glu.gluUnProject( winX, winY, 0.0, modelview, 0, projection, 0, viewport, 0, wcoord, 0);
System.out.println("x: " + wcoord[0] +"y: "+wcoord[1]+" worked? "+test);
System.out.println(modelview[0]);
return wcoord;
}
编辑 :: 忘了提到我注意到 glu.gluUnproject 返回一个布尔值,所以我将它分配给一个名为 test 的布尔值,它返回 false。
EDIT2 :: 我添加了另一个调试语句 - System.out.println(modelview[0]); 并且还返回 0.0
感谢您的帮助
詹姆士