Я хочу сделать небольшое небольшое приложение, в котором у вас есть 4 линии, каждая из которых имеет первую координату, расположенную где-то случайно на одной из сторон окна, а вторая координата будет следовать за мыши, так что вы получите этот эффект:Перерисовывающие линии с LWJGL
вы не можете увидеть курсор, но линии встретиться курсор в центре.
Моя проблема заключается в том, что я не могу заставить ее перемещать строки случайным образом. Таким образом, каждый кадр или тик или миллисекунда строк случайным образом меняют положение и удаляют предыдущие строки. После этого я хочу случайным образом изменить цвет линий, чтобы выбрать место и случайную позицию и в значительной степени дать кому угодно и эпилептическую форму, но сначала мне нужно выяснить позицию.
Я попытался выполнить некоторые команды glClear (GL _...), но они, похоже, не работают. Есть ли способ полностью очистить экран и повторить команду glBegin (GL_LINES), чтобы поместить ее в другое место?
Вот мой код:
package tests;
import static org.lwjgl.opengl.GL11.*;
import java.util.Random;
import org.lwjgl.LWJGLException;
import org.lwjgl.input.*;
import org.lwjgl.opengl.*;
public class game {
int wx = 600;
int hy = 400;
int rx = new Random().nextInt(wx);
int ry = new Random().nextInt(hy);
public game() throws LWJGLException {
int mouseX = Mouse.getX();
int mouseY = hy-Mouse.getY()-1;
Display.setDisplayMode(new DisplayMode(wx, hy));
Display.create();
Display.setTitle("Game");
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, wx, hy, 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
while(!Display.isCloseRequested()) {
lines();
while(Keyboard.next()) {
if(Keyboard.getEventKey() == Keyboard.KEY_ESCAPE) {
Display.destroy();
System.exit(0);
}
}
while(Mouse.next()) {
if(Mouse.isButtonDown(0)) {
System.out.println("(" + mouseX + ", " + mouseY + ")");
}
}
}
}
public void lines() {
glClear(GL_COLOR_BUFFER_BIT);
int mouseX = Mouse.getX();
int mouseY = hy-Mouse.getY()-1;
glBegin(GL_LINES);
glVertex2i(rx, 0);
glVertex2i(mouseX, mouseY);
glEnd();
glBegin(GL_LINES);
glVertex2i(0, ry);
glVertex2i(mouseX, mouseY);
glEnd();
glBegin(GL_LINES);
glVertex2i(rx, hy);
glVertex2i(mouseX, mouseY);
glEnd();
glBegin(GL_LINES);
glVertex2i(wx, ry);
glVertex2i(mouseX, mouseY);
glEnd();
glLineWidth(5);
glColor3f(1f, 0f, 0f);
Display.update();
Display.sync(500);
}
public static void main(String[] args) throws LWJGLException {
new game();
}
}
"но они, кажется, не работать" Что вы имеете в виду под этим? Что с ними не работает? – antonijn
Я имею в виду, что они не делают того, что я хочу от них делать. То есть, избавиться от текущих линий и воссоздать новые с помощью линий(). –
Итак, как выглядит ваше приложение? Нам было бы очень полезно знать. – antonijn