我們應該使用LWJGL 2.9.3創建一個顯示線框對象的簡單應用程序。我創建了一個基於http://www.glprogramming.com/red/chapter01.html的第一個示例代碼的測試課程。我最終得到的是一個程序,該程序在短時間內閃爍白色方塊,然後消失。我不確定我做錯了什麼。相同的openGL調用在LWJGL中產生不同的結果
下面是測試代碼:
package Test.LWJGL;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import static CS355.LWJGL.LWJGLSandbox.DISPLAY_HEIGHT;
import static CS355.LWJGL.LWJGLSandbox.DISPLAY_WIDTH;
import static org.lwjgl.opengl.GL11.*;
import static org.lwjgl.opengl.GL11.glFlush;
public class LWJGLTest {
public static void render() {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f, 1.0f, 1.0f);
glOrtho(0, 1.0, 0.0, 1.0, -1.0, 1.0);
glBegin(GL_POLYGON);
glVertex3f(0.25f, 0.25f, 0.0f);
glVertex3f(0.75f, 0.25f, 0.0f);
glVertex3f(0.75f, 0.75f, 0.0f);
glVertex3f(0.25f, 0.75f, 0.0f);
glEnd();
glFlush();
}
public static void main(String[] args) {
try {
Display.setDisplayMode(new DisplayMode(DISPLAY_WIDTH,DISPLAY_HEIGHT));
Display.setFullscreen(false);
Display.create();
glClearColor(0.0f,0.0f,0.0f,0.0f);
while(!Display.isCloseRequested() && !Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {
if(Display.isVisible()) {
render();
}
else {
if(Display.isDirty()) {
render();
}
try {
Thread.sleep(100);
}
catch(InterruptedException ex) {}
}
Display.update();
Display.sync(60);
}
}
catch(Exception ex) {
ex.printStackTrace();
}
finally {
Mouse.destroy();
Keyboard.destroy();
Display.destroy();
}
}
}
謝謝。你知道現在的openGL比http://www.glprogramming.com更好的資源嗎,如果lwjgl 2.9.3支持更多的最新功能? – AaronF
對於現代GL,[open.gl](http://open.gl)和[學習現代3D圖形編程](http://alfonse.bitbucket.org/oldtut/)相當不錯。 lwjgl應該支持現代GL,但我不熟悉它。 – derhass