Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何绘制列表中包含的多个GLQuad?_Java_Opengl_Lwjgl - Fatal编程技术网

Java 如何绘制列表中包含的多个GLQuad?

Java 如何绘制列表中包含的多个GLQuad?,java,opengl,lwjgl,Java,Opengl,Lwjgl,我做了一个小lwjgl程序,在这个程序中,我可以通过按下一个按钮来创建框。但是,我似乎无法在for循环中绘制多个四边形 下面是我的代码:我有一个box类,这样我可以处理许多box package LWJGL_Learn; import java.util.Random; import static org.lwjgl.opengl.GL11.*; import org.lwjgl.opengl.*; import org.lwjgl.*; public class Box { s

我做了一个小lwjgl程序,在这个程序中,我可以通过按下一个按钮来创建框。但是,我似乎无法在for循环中绘制多个四边形

下面是我的代码:我有一个box类,这样我可以处理许多box

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,它存储我的box类,并以此初始化

static LinkedList<Box> boxes = new LinkedList<Box>();
静态链接列表框=新建链接列表();
实际呈现它的代码如下所示:

glBegin(GL11.GL_QUADS);
for (int x = 0; x < boxes.size(); x++) {
    boxes.get(x).draw();
}
glEnd();
glBegin(GL11.glu-QUADS);
对于(int x=0;x
此代码的问题在于,它似乎只绘制最近添加到列表中的框。我不太清楚这是为什么,但当我在执行结束时添加代码以打印框列表时,每次都会出现一个大小正确的列表。我假设这意味着在for循环中迭代每个框,这意味着在绘制下一个on之前,在代码中的某个地方上一个框将从屏幕上清除

我想。你们能纠正我的代码并向我解释为什么openGL会这样做吗


如果需要,我可以发布完整的代码。

不是GL只渲染一个四元组,而是您的代码只定义一个四元组,然后渲染其“n”个副本

这:


将长方体参数声明为静态-这意味着它们由长方体的所有实例共享。

oh。我的印象是静态字段仅由。。。不要介意。谢谢,你终于澄清了我对java的一个巨大误解!
static int xPos, yPos, boxWide, boxHigh;