bluefireoly:
私は、「無制限のマウスの動き」に良い方法は何か疑問に思って?(あなたが無限に見て回ることができます最初の人のゲームのように)
私は(Java用のバインディングを提供します)OpenGLとLWJGLを使用しています。:私は、次の可能バインディング持っhttps://www.lwjgl.org/customize現在、私は唯一のマウス入力を処理するためにGLFWを使用しています(内容の下にリストされているが)。
私の現在のアプローチは以下の通りであるが、明らかに、カーソルは、最終的に画面の端に到達します。
public class MouseInput {
private final Vector2d previousPosition;
private final Vector2d currentPosition;
private final Vector2f displayVector;
private boolean inWindow = false;
// [some code here]
public void init() {
glfwSetCursorPosCallback(window.getHandle(), (windowHandle, xpos, ypos) -> {
currentPosition.x = xpos;
currentPosition.y = ypos;
});
glfwSetCursorEnterCallback(window.getHandle(), (windowHandle, entered) -> {
inWindow = entered;
});
// [some code here]
}
public void input() {
displayVector.x = 0;
displayVector.y = 0;
if (previousPosition.x > 0 && previousPosition.y > 0 && inWindow) {
double deltaX = currentPosition.x - previousPosition.x;
double deltaY = currentPosition.y - previousPosition.y;
if (deltaX != 0) {
displayVector.y = (float) deltaX;
}
if (deltaY != 0) {
displayVector.x = (float) deltaY;
}
}
previousPosition.x = currentPosition.x;
previousPosition.y = currentPosition.y;
}
// [some code here]
}
今、私はカメラを回転させるようにどこか計算displayVectorを使用することができます。
私はGLFWとは異なるものを使用する必要がありますか?I)は、(すべての入力後に中央にカーソルバックの位置を設定しようとしたが、それは非常にグリッチました。
私は私のコードの修正を探しているが、良いアプローチのためのベストプラクティスであるわけではありません。
genpfault:
GLFW_CURSOR_DISABLED
皮および仮想および提供、カーソルをつかむ無制限のカーソルの動きを。これは、例えば3Dカメラのコントロールを実装するために有用です。