2015-07-12 73 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();