2
我試圖將OpenGL中的3d點轉換爲屏幕上的2d點來渲染我正在寫的小遊戲的健康狀況欄。但是,我在檢索繪製健康狀況欄的X座標時遇到了一些問題。基本上,健康欄必須顯示在玩家之上,但必須始終具有與屏幕相同的寬度/高度。Java LWJGL OpenGL轉換3d點到2d點
我調整的代碼片段,我從接受的答案發現,在Convert a 3D location to a 2D on-screen point. (XYZ => XY),我現在有這個
public static int[] getScreenCoords(double x, double y, double z) {
FloatBuffer screenCoords = BufferUtils.createFloatBuffer(4);
IntBuffer viewport = BufferUtils.createIntBuffer(16);
FloatBuffer modelView = BufferUtils.createFloatBuffer(16);
FloatBuffer projection = BufferUtils.createFloatBuffer(16);
// int[] screenCoords = new double[4];
// int[] viewport = new int[4];
// double[] modelView = new double[16];
// double[] projection = new double[16];
GL11.glGetFloat(GL11.GL_MODELVIEW_MATRIX, modelView);
GL11.glGetFloat(GL11.GL_PROJECTION_MATRIX, projection);
GL11.glGetInteger(GL11.GL_VIEWPORT, viewport);
boolean result = GLU.gluProject((float) x, (float) y, (float) z, modelView, projection, viewport, screenCoords);
if (result) {
return new int[] { (int) screenCoords.get(3), (int) screenCoords.get(1) };
}
return null;
}
它似乎做工精細與y座標,然而,X總是返回0不管角度是什麼。
非常感謝提前!