2
我使用gluUnProject轉換屏幕座標到世界座標,但很遺憾,我得到一個小的價值作爲回報。它把(0,0)到約(-0.80,0.40),但它應該轉換爲約(4,2)...代碼:gluUnProject的用法
((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];
那麼,我會測試它。 Btw z應該被定義爲一個緩衝區,並且glUnProject需要z被定義爲float。我如何將緩衝區轉換爲浮點數? – Qualphey 2012-02-20 21:39:19
在Trevor的例子中,'&z' *是一個緩衝區,它只包含一個浮點數。 'GL_DEPTH_COMPONENT'是'glReadPixels()'理解的,只返回1個值。 – Olie 2013-06-06 23:28:24