私は OpenGL の使い方を学んでおり、Slick 2D Game ライブラリに関するいくつかの実験を構築し始めていますが、いくつかの問題が発生しています。
私は単純な線を描画し、それらを配列に格納してから、その配列を反復処理して各線をレンダリングしようとしています。これはメインクラスです:
ArrayList<Bloco> listaBlocos = new ArrayList<Bloco>();
ArrayList<Linha> listaLinhas = new ArrayList<Linha>();
boolean random = false;
@Override
public void init(GameContainer gc) throws SlickException {
listaBlocos = new ArrayList<Bloco>();
listaLinhas = new ArrayList<Linha>();
}
@Override
public void update(GameContainer gc, int delta) throws SlickException {
Input input = gc.getInput();
if (input.isMousePressed(0))
listaBlocos.add(new Bloco(input.getMouseX() - 5, input.getMouseY() - 5, 10, new Color(0, 255, 0)));
if (input.isMousePressed(1))
listaBlocos.add(new Bloco(input.getMouseX() - 5, input.getMouseY() - 5, 10, new Color(255, 0, 0)));
if (input.isKeyPressed(Input.KEY_A))
if (random == false)
random = true;
else
random = false;
if (input.isKeyPressed(Input.KEY_S))
listaLinhas.add(new Linha(input.getMouseX(), input.getMouseY(), 100, 100));
if (input.isKeyDown(Input.KEY_D))
listaLinhas.get(0).drawLine();
if (!listaBlocos.isEmpty() && random)
for (Bloco b : listaBlocos)
b.moveRandom(delta);
}
public void render(GameContainer gc, Graphics g) throws SlickException {
for (Linha l : listaLinhas)
l.drawLine();
for (Bloco b : listaBlocos)
b.draw(g);
}
これが Linha クラスです (Line を拡張したものです):
public class Linha extends Line {
public Linha(float x1, float y1, float x2, float y2) {
super(x1, y1, x2, y2);
}
public void drawLine() {
GL11.glColor3f(1.0f, 1.0f, 1.0f);
GL11.glBegin(GL11.GL_LINES);
GL11.glLineWidth(5.0f);
GL11.glVertex2f(getX1(), getY1());
GL11.glVertex2f(getX2(), getY2());
GL11.glEnd();
}
}
これは単なるテスト用でした。一連の行をレンダリングするためのより良い方法があれば教えてください。問題は、線が画面上で点滅することです。常にフルカラーであるとは限りません。問題を記録したので、何が起こっているかがわかります http://www.youtube.com/watch?v=ymO00yb5NVE