Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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 LWJGL-创建正方形网格_Java_Opengl_Lwjgl - Fatal编程技术网

Java LWJGL-创建正方形网格

Java LWJGL-创建正方形网格,java,opengl,lwjgl,Java,Opengl,Lwjgl,(彩色方块只是添加到要绘制的阵列中的位置) 我在Java中创建正方形网格时遇到问题。正如您在图片中所看到的,看起来好像正方形被放置在正确的位置,但是随着x和y的增长,它们在x和y中逐渐变小。我一直在努力找到正确的算法,现在我有问题。 public void draw() { setColor(material); glBegin(GL_QUADS); glVertex2i(x+(SIZE*(x-1)), y+(SIZE*(y-1))); //top-left v


(彩色方块只是添加到要绘制的阵列中的位置)
我在Java中创建正方形网格时遇到问题。正如您在图片中所看到的,看起来好像正方形被放置在正确的位置,但是随着x和y的增长,它们在x和y中逐渐变小。我一直在努力找到正确的算法,现在我有问题。
public void draw() {
    setColor(material);
    glBegin(GL_QUADS);
        glVertex2i(x+(SIZE*(x-1)), y+(SIZE*(y-1))); //top-left vertex
        glVertex2i(SIZEx, y+(SIZE(y-1)));         //top-right vertex
        glVertex2i(SIZEx, SIZEy);                 //bottom-left vertex
        glVertex2i(x+(SIZE*(x-1)), SIZE*y);         //bottom-right vertex
    glEnd();
}
public void draw(){
设置颜色(材料);
glBegin(GL_QUADS);
glVertex2i(x+(大小*(x-1)),y+(大小*(y-1));//左上角顶点
glVertex2i(SIZEx,y+(大小(y-1));//右上顶点
glVertex2i(SIZEx,SIZEy);//左下角顶点
glVertex2i(x+(大小*(x-1)),大小*y);//右下角顶点
格伦德();
}

大小设置为32。

这里的问题是在多个位置添加“+x”和“+y”。这就是为什么正方形的大小会随着x和y的变化而变化。如果你想写一个正方形,在它们之间有一个小的距离,你可以尝试这样的方法,比如说SIZE=32,PADDING_HALF=1,那么类似的方法应该可以工作(这样,正方形之间应该是30x30,PADDING为2):


还要记住,在OpenGL中,y坐标并没有反转。

那只是。。。真恶心。只需为x轴和y轴使用两个for循环,并为相应顶点的x轴和y轴添加一个大小(在您的示例中为32)。
public void draw() {
    setColor(material);
    glBegin(GL_QUADS);
        glVertex2i(SIZE*(x-1) + PADDING_HALF, SIZE*y     - PADDING_HALF); //top-left vertex
        glVertex2i(SIZE*x     - PADDING_HALF, SIZE*y     - PADDING_HALF); //top-right vertex
        glVertex2i(SIZE*(x-1) + PADDING_HALF, SIZE*(y-1) + PADDING_HALF); //bottom-left vertex
        glVertex2i(SIZE*x     - PADDING_HALF, SIZE*(y-1) + PADDING_HALF); //bottom-right vertex
    glEnd();
}