2011-01-15 36 views
0

このコードを実行しようとすると、何とか黒い画面が表示されます。実際に表示したいものを表示するにはどうしたらいいですか?LWJGL - 黒い画面

私はEclipseを使用しており、lwjgl.jarとlwjgl_utils.jarをビルドパスに追加しました。

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

クリアカラーを変更しようとしましたか?テクスチャをジオメトリに正しくマッピングしていないと思われるものから、それが黒く表示されます。あなたのクリアカラーも黒であるので、何も見えません。 – Bartvbl

答えて

1

では、あなたの三角形が黒であるように、このglColor3f(1,1,1)が見えないレンダリングします。

関連する問題