我刚开始学习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