我剛開始學習LWJGL/OpenGL來創建一個3D遊戲,所以我從小開始嘗試做一個簡單的2D行顯示。 窗口加載正常,尺寸正確,但沒有任何東西在畫面上繪製。有一個空白的屏幕,我似乎沒有對代碼做任何更改影響在屏幕上繪製的內容。這可能是因爲我對如何正確執行此操作缺乏瞭解,或者可能是我的代碼/計算機出現問題。我嘗試添加和刪除各種東西給我的初始化代碼,如glEnable(GL_TEXTURE_2D)和glDisable(GL_TEXTURE_2D),我已經嘗試在渲染代碼中調用pushMatrix和popMatrix,我試圖在GL11初始化代碼中定義視口,但沒有任何似乎在工作。我的代碼如下:LWJGL OpenGL黑色屏幕
import static org.lwjgl.opengl.GL11.*;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.*;
public class Main {
public Main(String[] args) throws LWJGLException{
Logging.info("Starting up "+Info.title+" v"+Info.version+"!");
initDisplay();
initGL11();
startGameLoop();
}
public static void main(String[] args) throws LWJGLException{
new Main(args);
}
public void initDisplay(){
try {
Logging.info("Initializing display...");
Display.setDisplayMode(new DisplayMode(800, 600));
Display.setTitle(Info.title);
Display.create();
Logging.info("Display initialized!");
} catch (LWJGLException e) {
Logging.severe(e);
Display.destroy();
}
}
public void initGL11() throws LWJGLException{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0f, 800f, 600f, 0f, 0f, 1f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
public void startGameLoop(){
while(!Display.isCloseRequested()){
glBegin(GL_LINE);
glColor3f(1f,0f,0f);
glVertex2f(0f,0f);
glVertex2f(1f,1f);
glEnd();
Display.update();
Display.sync(60);
}
Logging.info("Closing down!");
Display.destroy();
System.exit(0);
}
}
日誌和信息類只是一些類,控制System.out和存儲靜態變量靜態引用。這些不影響LWJGL或OpenGL,所以我沒有看到包括它們在內的很多觀點。
在我的構建路徑,我有lwjgl.jar,lwjgl_util.jar和slick_util.jar和當地人都與正確lwjgl.jar。開始項目時我沒有錯誤,輸出正常。我不知道爲什麼我仍然黑屏。如果它有任何用處,我會按照this教程系列創建我的項目,並且它在視頻中似乎可以正常工作。
我改變了從點(0.1,0.1)到點(0.5,0.4)繪製的幾何代碼,但仍然出現黑屏。然後,我嘗試將glOrtho代碼更改爲您的建議,但仍然沒有任何區別。我還添加glClear(GL_COLOR_BUFFER_BIT)作爲我while循環內部的第一行,但屏幕仍然是黑色的。 – daviga404
你的新分數仍然在Z = 0。 – genpfault
@ user1301590:另外,你確定窗口是*完全*空白嗎?檢查左上角的紅色像素。或者使用'glVertex2f(800f,600f)'作爲第二點。 – genpfault