Hey
Ich bin letztens von lwjgl 2 zu lwjgl 3 umgestiegen.
Nun, momentan habe ich Schwierigkeiten mit GLFW.
Ich programmiere momentan eine kleine Engine, um Dinge wie Edge- Collapse und anderes auszuprobieren. Dabei möchte ich mich wie in jedem anderen Spiel mit der Maus umgucken können. Irgendwann verlässt die Maus dann aber das Fenster, was ich natürlich nicht möchte.
Bei lwjgl 2 ging das ganze ja ganz einfach:
Bei lwjgl 3 gibt es das aber leider nicht :/
Stattdessen habe ich jetzt einen wahrscheinlich denkbar langsamen Workaround gefunden, welcher aber etwas "zittert", wenn man die Maus diagonal bewegt:
(mouseX und mouseY sind beide DoubleBuffer und delta ist ein Vector2f (JOML))
Kennt da jemand vielleicht einen besseren Weg?
Ich bin letztens von lwjgl 2 zu lwjgl 3 umgestiegen.
Nun, momentan habe ich Schwierigkeiten mit GLFW.
Ich programmiere momentan eine kleine Engine, um Dinge wie Edge- Collapse und anderes auszuprobieren. Dabei möchte ich mich wie in jedem anderen Spiel mit der Maus umgucken können. Irgendwann verlässt die Maus dann aber das Fenster, was ich natürlich nicht möchte.
Bei lwjgl 2 ging das ganze ja ganz einfach:
Code:
Mouse.setGrabbed(true);
//Dann die Maus mittig in den Bildschirm platzieren (Die Methode dafür habe ich vergessen)
Mouse.setGrabbed(false);
Bei lwjgl 3 gibt es das aber leider nicht :/
Stattdessen habe ich jetzt einen wahrscheinlich denkbar langsamen Workaround gefunden, welcher aber etwas "zittert", wenn man die Maus diagonal bewegt:
Code:
public void updateMouse(long window) {
camera.setYaw(((float) Math.toRadians(getMousePosition(window).x + delta.x)) * 2);
camera.setPitch(((float) Math.toRadians(getMousePosition(window).x + delta.y)) * 2);
Vector2f oldPos = getMousePosition(window);
GLFW.glfwSetCursorPos(window, Options.DISPLAY_SIZE.x / 2, Options.DISPLAY_SIZE.y / 2);
Vector2f newPos = getMousePosition(window);
delta.x += oldPos.x - newPos.x;
delta.y += oldPos.y - newPos.y;
}
private Vector2f getMousePosition(long window) {
mouseX = BufferUtils.createDoubleBuffer(1);
mouseY = BufferUtils.createDoubleBuffer(1);
GLFW.glfwGetCursorPos(window, mouseX, mouseY);
Vector2f mousePosition = new Vector2f((float) mouseX.get(), (float) (mouseY.get()));
return mousePosition;
}
(mouseX und mouseY sind beide DoubleBuffer und delta ist ein Vector2f (JOML))
Kennt da jemand vielleicht einen besseren Weg?