1

ボタンを押すだけでボックスを作成できる小さな lwjgl プログラムを作成しました。ただし、for ループ内で複数のクワッドを描画できないようです。

これが私のコードです:私はボックスクラスを持っているので、多くのボックスを扱うことができます

package LWJGL_Learn;

import java.util.Random;
import static org.lwjgl.opengl.GL11.*;

import org.lwjgl.opengl.*;
import org.lwjgl.*;

public class Box {

    static int xPos, yPos, boxWide, boxHigh;
    public Box(int width, int height) {
        Random ran = new Random();
        xPos = ran.nextInt(width);
        yPos = ran.nextInt(height);
        boxWide = ran.nextInt(40)+20;
        boxHigh = ran.nextInt(40)+20;
    }
    public void draw() {
            glVertex2f(xPos, yPos);
            glVertex2f(xPos + boxWide, yPos);
            glVertex2f(xPos + boxWide, yPos + boxHigh);
            glVertex2f(xPos, yPos + boxHigh);   
    }
}

次に、メインファイルに、ボックスクラスを格納する LinkedList を持っており、そのように初期化されています

static LinkedList<Box> boxes = new LinkedList<Box>();

実際にレンダリングするコードは次のとおりです。

glBegin(GL11.GL_QUADS);
for (int x = 0; x < boxes.size(); x++) {
    boxes.get(x).draw();
}
glEnd();

このコードの問題は、リストに最後に追加されたボックスのみを描画しているように見えることです。正確な理由はわかりませんが、実行の最後にボックス リストを出力するコードを追加すると、毎回正しいサイズのリストが表示されました。これは、すべてのボックスが for ループで繰り返されることを意味すると思います。つまり、コードのどこかで、次のボックスが描画される前に、前のボックスが画面からクリアされていることを意味します。

おもう。私のコードを修正して、なぜopenGLがこれを行うのか説明してもらえますか?

必要に応じて、完全なコードを投稿できます。

4

1 に答える 1