我想在LWJGL3中把一个3d向量转换成一个2d向量。目标是在3d世界中移动时在2d屏幕上呈现一个名称标签。
这是我在lwjgl 2上使用的:
public static Vector2d to2D(double x, double y, double z) {
FloatBuffer screenCoords = BufferUtils.createFloatBuffer(3);
IntBuffer viewport = BufferUtils.createIntBuffer(16);
FloatBuffer modelView = BufferUtils.createFloatBuffer(16);
FloatBuffer projection = BufferUtils.createFloatBuffer(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 Vector2d(screenCoords.get(0), Display.getHeight() - screenCoords.get(1));
}
return null;
}
在lwjgl2中,使用glu.gluproject()是可行的,现在已经删除了,在新的lwjgl版本中有其他的替代方案吗?
1条答案
按热度按时间mkshixfv1#
您可以使用joml(也可以作为lwjgl3插件下载)及其
Matrix4f.project()
方法。以下是所示lwjgl3+joml代码段的一个正常工作端口:除了端口之外,我还遵循了lwjgl 3中有关本机内存管理的最佳实践:https://blog.lwjgl.org/memory-management-in-lwjgl-3/#strategy5