Последние пару часов я искал в интернете, пытаясь выяснить, как расположить трехмерные объекты на экране. Один из самых подробных постов, которые я нашел, это этот один, но мне все еще не удается заставить его работать. Я почти уверен, что это связано с моим непониманием OpenGL / LWJGL.
Кажется, независимо от того, сколько я играю с вещами, я не могу заставить их выплевывать что-то полезное.
Вот где я сейчас нахожусь
GL11.glPushAttrib(GL11.GL_TRANSFORM_BIT);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glPushMatrix();
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glPushMatrix();
try
{
Method setupCameraTransform = EntityRenderer.class.getDeclaredMethod("setupCameraTransform", float.class, int.class);
setupCameraTransform.setAccessible(true);
setupCameraTransform.invoke(mc.entityRenderer, event.getPartialTicks(), 0);
}
catch (Exception e)
{
e.printStackTrace();
}
FloatBuffer modelMatrix = BufferUtils.createFloatBuffer(16);
GL11.glGetFloat(GL11.GL_MODELVIEW_MATRIX, modelMatrix);
FloatBuffer projMatrix = BufferUtils.createFloatBuffer(16);
GL11.glGetFloat(GL11.GL_PROJECTION_MATRIX, projMatrix);
IntBuffer viewport = BufferUtils.createIntBuffer(16);
GL11.glGetInteger(GL11.GL_VIEWPORT, viewport);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glPopMatrix();
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glPopMatrix();
GL11.glPopAttrib();
FloatBuffer screen2D = BufferUtils.createFloatBuffer(16);
if(Project.gluProject(242, 76, 25, modelMatrix, projMatrix, viewport, screen2D))
{
int[] screen = new int[] {(int)screen2D.get(0), (int)screen2D.get(1)};
mc.ingameGUI.drawString(mc.fontRenderer, "overlay", screen[0], screen[1], 0xFF00FF00);
}
Многое из этого поступило из этой ветки, которая казалась очень многообещающей, и они утверждали, что решили ее, но никогда не указывали, как они это сделали. Я предполагаю, что матрицы, которые я предоставляю gluProject, не верны. Но я не знаю, какими именно они должны быть.
Любое понимание того, как этого добиться, было бы здорово, спасибо!