Hallo,
ich habe gestern angefangen mich mit der LWJGL-Bibliothek ausseinander zu setzen und wollte mal probieren auf Masuklick hin an die entsprechende Stelle einen Punkt zu setzen.
Das klappt auch ganz gut, nur die y-Koordinate haut nicht hin. Der Punkt befindet sich immer etwas über der Stelle wo ich mit der Maus hingeklickt habe.
Hier der Code:
ich habe gestern angefangen mich mit der LWJGL-Bibliothek ausseinander zu setzen und wollte mal probieren auf Masuklick hin an die entsprechende Stelle einen Punkt zu setzen.
Das klappt auch ganz gut, nur die y-Koordinate haut nicht hin. Der Punkt befindet sich immer etwas über der Stelle wo ich mit der Maus hingeklickt habe.
Hier der Code:
Java:
public class Test {
public static final int dimension = 800;
private ArrayList<ParticleSystem> points = new ArrayList<Point>();
private long currentTime = 0;
private long previousTime = 0;
private long elapsed = 0;
private final long framePeriode = 25;
public static void main(String[] args) {
Test test = new Test();
test.start();
}
public void start() {
try {
Display.setDisplayMode(new DisplayMode(dimension, dimension));
Display.create();
Mouse.create();
} catch (LWJGLException e) {
e.printStackTrace();
System.exit(0);
}
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, 800, 0, 600, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
while (!Display.isCloseRequested()) {
setTime();
if (elapsed > framePeriode) {
handleMouseInput();
renderPoints();
Display.update();
elapsed = 0;
}
}
Display.destroy();
}
private void renderPoints() {
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
GL11.glBegin(GL11.GL_POINTS);
for (int index = 0; index < points.size(); index++) {
Point point = points.get(index);
point.render();
}
GL11.glEnd();
GL11.glFlush();
}
private void setTime() {
currentTime = (Sys.getTime() * 1000) / Sys.getTimerResolution();
long diffTime = currentTime - previousTime;
previousTime = currentTime;
elapsed += (diffTime);
}
private void addPoint(PointVector spawnPoint) {
points.add(new Point(spawnPoint));
}
private void handleMouseInput() {
while (Mouse.next()) {
if (Mouse.isButtonDown(0)) {
PointVector position = new PointVector(Mouse.getEventX(),
Mouse.getEventY());
addPoint(position);
}
}
}
}
Java:
public class Particle {
private PointVector position;
public Particle(PointVector position) {
this.position = position;
}
void render() {
glColor3f(1, 1, 1);
glVertex2f(position.getX(), position.getY());
}
}