2015-07-12 60 views
0

嘿所以我的java程序不绘制正方形? 它可以很好地画一条线,但是当我尝试画一个正方形时,它只画了一半。lwjgl glVertex2f不绘制正方形

这里是什么lookes像: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(); 
    } 

} 

回答

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();