2012-01-14 81 views
5

我想要使用LWJGL在Java中繪製一個簡單的三角形。基本LWJGL三角形與OpenGL

我想要一個簡單的三角形,每個都有一個特定顏色的角落。現在它只是給我一個空白的屏幕。

這裏是我的代碼:

package com.ex; 

import org.lwjgl.LWJGLException; 
import org.lwjgl.opengl.Display; 
import org.lwjgl.opengl.DisplayMode; 
import org.lwjgl.opengl.GL11; 
import org.lwjgl.input.Keyboard; 

public class ColoredTriangle { 
    public void start() { 
     try { 
      Display.setDisplayMode(new DisplayMode(640, 480)); 
      Display.create(); 
     } catch (LWJGLException e) { 
      e.printStackTrace(); 
      System.exit(0); 
     } 

     // Init OpenGL 
     GL11.glMatrixMode(GL11.GL_PROJECTION); 
     GL11.glLoadIdentity(); 
     GL11.glOrtho(0, 640, 480, 0, 1, -1); 
     GL11.glMatrixMode(GL11.GL_MODELVIEW); 

     boolean quit = false; 

     while (!quit) {   
      // Clear the screen. 
      GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); 

      // Begin drawing 
      GL11.glBegin(GL11.GL_TRIANGLES); 
       // Top & Red 
       GL11.glColor3f(1.0f, 0.0f, 0.0f); 
       GL11.glVertex2f(0.0f, 1.0f); 

       // Right & Green 
       GL11.glColor3f(0.0f, 1.0f, 0.0f); 
       GL11.glVertex2f(1.0f, 1.0f); 

       // Left & Blue 
       GL11.glColor3f(0.0f, 0.0f, 1.0f); 
       GL11.glVertex2f(1.0f, -1.0f); 
      GL11.glEnd(); 

      Display.update(); 

      if (Display.isCloseRequested() || Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) 
       quit = true; 
     } 

     Display.destroy(); 
    } 

    public static void main(String args[]) { 
     ColoredTriangle ct = new ColoredTriangle(); 
     ct.start(); 
    } 

} 

回答

7

這是工作完全正常,這只是你的三角形是1個單位高,您的窗口是480臺高,所以只顯示爲在角落裏的一個像素。

如果您將GL11.glOrtho(0, 640, 480, 0, 1, -1);替換爲GL11.glOrtho(-3.2, 3.2, -2.4, 2.4, -1, 1);,那麼您會看到一切正常。