それぞれの入力状態は poll() メソッドで更新されます。poll() は Display.update() で自動的に呼ばれますので、その後に入力処理を書きます。
入力状態の処理には大きく分けて二つの方法があります。一つ目は、Mouse.isButtonDown(int index) のようにその時点での状態を取得する方法です。しかしこの方法では、poll() 同士の間で変化した状態を知ることはできません。このときは poll したイベントを舐めて処理します。ただ、MouseEvent や KeyEvent のようなクラスがあるのではなく、それぞれの static なイベント処理メソッドを呼んで処理するのが若干ダサイです。next() メソッドで次のイベントに移動し、getEvent*** メソッドでイベントの属性を取得します。
サンプル
import java.util.logging.Level;
import java.util.logging.Logger;
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
/**
* LWJGL のマウス入力のサンプル
*
* @author Yuki_M
*/
public class LWJGLInput1 {
private static final DisplayMode DISPLAY_MODE = new DisplayMode(640, 480);
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
LWJGLInput1 main = new LWJGLInput1();
main.start();
}
public void start() {
try {
Display.setDisplayMode(DISPLAY_MODE);
Display.create();
} catch (LWJGLException ex) {
Logger.getLogger(LWJGLInput1.class.getName()).log(Level.SEVERE, null, ex);
System.exit(0);
}
while (!Display.isCloseRequested()) {
Display.update();
pollEvents();
}
Display.destroy();
}
private void pollEvents() {
if (Mouse.isButtonDown(0)) {
int x = Mouse.getX();
int y = Mouse.getY();
System.out.println("Mouse Down: " + x + ", " + y);
}
while (Mouse.next()) {
int dx = Mouse.getEventDX();
int dy = Mouse.getEventDY();
System.out.println("Mouse Move: " + dx + ", " + dy);
}
}
}