lwjgl glVertex2f不绘制正方形

时间:2015-07-12 14:12:33

标签: java lwjgl

嘿所以我的java pogram不画广场? 它可以精细画一条线但是当我试图画一个正方形时它只画了一半。

以下是它的外观:http://gyazo.com/1f44d59d478537199a51d3d57ccc63e4

这是我的代码:

package data;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;

import static org.lwjgl.opengl.GL11.*;

public class Boot {

    public Boot() {
        Display.setTitle("Game");
        try {
            Display.setDisplayMode( new DisplayMode(600, 400));
            Display.create();
        } catch (LWJGLException e) {
            e.printStackTrace();
        }

        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0, 600, 400, 0, 1, -1);
        glMatrixMode(GL_MODELVIEW);

        while(!Display.isCloseRequested()) {

//          glBegin(GL_LINES);
//          glVertex2f(10, 10);
//          glVertex2f(100, 100);
//          glEnd();

            glClear(GL_COLOR_BUFFER_BIT);
            glColor3f(0.25f, 0.75f, 0.5f);

            glBegin(GL_LINES);
            glVertex2f(100, 100);
            glVertex2f(150, 100);
            glVertex2f(150, 150);
            glVertex2f(100, 150);
            glVertex2f(100, 100);
            glEnd();

            Display.update();
            Display.sync(60);

        }

        Display.destroy();

    }

    public static void main(String[] args) {
        new Boot();
    }

}

1 个答案:

答案 0 :(得分:0)

使用GL_LINES时,您必须为每个线段明确指定两个顶点:

glBegin(GL_LINES);
glVertex2f(100, 100);
glVertex2f(150, 100);
glVertex2f(150, 100);
glVertex2f(150, 150);
glVertex2f(150, 150);
glVertex2f(100, 150);
glVertex2f(100, 150);
glVertex2f(100, 100);
glEnd();

如果您想绘制连线,也可以使用GL_LINE_STRIP

glBegin(GL_LINE_STRIP);
glVertex2f(100, 100);
glVertex2f(150, 100);
glVertex2f(150, 150);
glVertex2f(100, 150);
glVertex2f(100, 100);
glEnd();

在这种情况下,您甚至可以使用GL_LINE_LOOP,它会自动连接最后一个和第一个顶点:

glBegin(GL_LINE_LOOP);
glVertex2f(100, 100);
glVertex2f(150, 100);
glVertex2f(150, 150);
glVertex2f(100, 150);
glEnd();