2012-01-14 30 views
5

Próbuję uzyskać prosty trójkąt narysowany w Javie przy użyciu LWJGL.Podstawowy trójkąt LWJGL z OpenGL

Próbuję uzyskać prosty trójkąt w górę, każdy z rogiem jednego określonego koloru. Teraz daje mi pusty ekran.

Oto mój kod:

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

} 

Odpowiedz

7

To działa perfekcyjnie, to po prostu, że trójkąt jest 1 jednostka wysoki a okno jest 480 jednostek wysokie, więc to pokazuje się tylko jako jeden piksel w rogu .

Po wymianie GL11.glOrtho(0, 640, 480, 0, 1, -1); na GL11.glOrtho(-3.2, 3.2, -2.4, 2.4, -1, 1); zobaczysz wszystko w porządku.