我做了一个小 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会这样做吗?
如果需要,我可以发布完整的代码。