2011-01-15 9 views
0

Aus irgendeinem Grund, wenn ich versuche, diesen Code auszuführen, bekomme ich nur einen schwarzen Bildschirm. Wie kann ich tatsächlich erreichen, dass es anzeigt, was ich anzeigen möchte?LWJGL - Schwarzer Bildschirm

Ich benutze Eclipse und ich habe lwjgl.jar und lwjgl_utils.jar in den Build-Pfad hinzugefügt.

import org.lwjgl.opengl.Display; 
import org.lwjgl.opengl.DisplayMode; 
import org.lwjgl.opengl.GL11; 
import org.lwjgl.util.glu.GLU; 
import org.lwjgl.input.Keyboard; 

public class game { 
private boolean done = false; 
private boolean fullscreen = false; 
private final String windowTitle = "Lesson 1"; 
private boolean f1 = false; 
private DisplayMode displayMode; 

    /** 
    * Everything starts and ends here. Takes 1 optional command line argument. 
    * If fullscreen is specified on the command line then fullscreen is used, 
    * otherwise windowed mode will be used. 
    * @param args command line arguments 
    */ 

public static void main(String args[]) { 
    boolean fullscreen = false; 
    if (args.length > 0) { 
    if (args[0].equalsIgnoreCase("fullscreen")) { 
    fullscreen = true; 
    } 
    } 
    game gamez = new game(); 
    gamez.run(fullscreen); 
} 

    /** 
    * Launch point 
    * @param fullscreen boolean value, set to true to run in fullscreen mode 
    */ 
public void run(boolean fullscreen) { 
    this.fullscreen = fullscreen; 
    try { 
    init(); 
    while (!done) { 
    mainloop(); 
    render(); 
    Display.update(); 
    } 
    cleanup(); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    System.exit(0); 
    } 
} 

    /** 
    * All updating is done here. Key and mouse polling as well as window closing and 
    * custom updates, such as AI. 
    */ 
private void mainloop() { 
    if (Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) 
    done = true; 
    if (Display.isCloseRequested()) 
    done = true; 
    if (Keyboard.isKeyDown(Keyboard.KEY_F1)) { 
    f1 = true; 
    switchmode(); 
    } 
    if (!Keyboard.isKeyDown(Keyboard.KEY_F1)) 
    f1 = false; 
} 

private void switchmode() { 
    fullscreen = !fullscreen; 
    try { 
    Display.setFullscreen(fullscreen); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 
} 

    /** 
    * For rendering all objects to the screen 
    * @return boolean for success or not 
    */ 
private void render() { 
    GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); 
    GL11.glLoadIdentity(); 
    GL11.glTranslatef(-1.5f, 0.0f, -6.0f); 
    GL11.glBegin(GL11.GL_TRIANGLES); 
    GL11.glVertex3f(0.0f, 1.0f, 0.0f); 
    GL11.glVertex3f(-1.0f, -1.0f, 0.0f); 
    GL11.glVertex3f(1.0f, -1.0f, 0.0f); 
    GL11.glEnd(); 
    GL11.glTranslatef(3.0f, 0.0f, 0.0f); 
    GL11.glBegin(GL11.GL_QUADS); 
    GL11.glVertex3f(-1.0f, 1.0f, 0.0f); 
    GL11.glVertex3f(1.0f, 1.0f, 0.0f); 
    GL11.glVertex3f(1.0f, -1.0f, 0.0f); 
    GL11.glVertex3f(-1.0f, -1.0f, 0.0f); 
    GL11.glEnd(); 
} 

    /** 
    * Create a window depending on whether fullscreen is selected 
    * @throws Exception Throws the window.create() exception up the stack. 
    */ 
private void createWindow() throws Exception { 
    Display.setFullscreen(fullscreen); 
    DisplayMode d[] = Display.getAvailableDisplayModes(); 
    for (int i = 0; i < d.length; i++) { 
    if (d[i].getWidth() == 640 && d[i].getHeight() == 480 && d[i].getBitsPerPixel() == 32) { 
    displayMode = d[i]; 
    break; 
    } 
    } 
    Display.setDisplayMode(displayMode); 
    Display.setTitle(windowTitle); 
    Display.create(); 
} 

    /** 
    * Do all initilization code here. Including Keyboard and OpenGL 
    * @throws Exception Passes any exceptions up to the main loop to be handled 
    */ 
private void init() throws Exception { 
    createWindow(); 
    initGL(); 
} 

    /** 
    * Initialize OpenGL 
    * 
    */ 
private void initGL() { 
    GL11.glEnable(GL11.GL_TEXTURE_2D); 
    GL11.glShadeModel(GL11.GL_SMOOTH); 
    GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); 
    GL11.glClearDepth(1.0); 
    GL11.glEnable(GL11.GL_DEPTH_TEST); 
    GL11.glDepthFunc(GL11.GL_EQUAL); 

    GL11.glMatrixMode(GL11.GL_PROJECTION); 
    GL11.glLoadIdentity(); 

    // calculate the apsect ratio of the window 
    GLU.gluPerspective(45.0f, 
       (float)displayMode.getWidth()/(float)displayMode.getHeight(), 
       0.1f, 
       100.0f); 
    GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST); 
} 

/** 
    * Cleanup all the resources 
    * 
    */ 
private void cleanup() { 
    Display.destroy(); 
} 
} 
+0

haben Sie versucht, die Farbe zu ändern? Von dem, was ich vermute, ordnen Sie die Textur nicht korrekt der Geometrie zu, die dann als schwarz angezeigt wird. Da deine klare Farbe auch schwarz ist, siehst du nichts. – Bartvbl

Antwort

1

In Render dieses glColor3f (1,1,1) sieht aus wie Ihr Dreieck ist schwarz.