Я использую gluUnProject, покрывающий координаты экрана для мировых координат, но, к сожалению, я получаю небольшое значение в качестве возврата Он преобразует (0,0) в (-0.80,0.40), но он должен конвертировать в (4,2) ... Код:
((GL11) gl).glGetIntegerv(GL11.GL_VIEWPORT, viewport, 0);
((GL11) gl).glGetFloatv(GL11.GL_MODELVIEW_MATRIX, modelViewMatrix, 0);
((GL11) gl).glGetFloatv(GL11.GL_PROJECTION_MATRIX, projectionMatrix, 0);
GLU.gluUnProject(main.x, main.y, 1, modelViewMatrix, 0, projectionMatrix, 0, viewport, 0, pointInPlane, 0);
xWcoord = pointInPlane[0];
yWcoord = pointInPlane[1];
zWcoord = pointInPlane[2];
main.x и main.y - это координаты экрана. И это определение других переменных:
public static int[] viewport = new int[16];
public static float[] modelViewMatrix = new float[16];
public static float[] projectionMatrix = new float[16];
public static float[] pointInPlane = new float[16];