我刚开始学习LWJGL/OpenGL来创建一个3D游戏,所以我从小的方面入手,试图制作一个简单的线条显示(2D)。
窗口加载良好,大小合适,但屏幕上没有绘制任何内容。屏幕是空白的,我似乎对代码所做的任何更改都不会影响屏幕上的内容。这可能是因为我缺乏正确理解如何做到这一点,或者是我的代码/计算机出了问题。我尝试在初始化代码中添加和删除各种东西,例如glEnable(GL_TEXTURE_2D)和glDisable(GL_TEXTURE_2D),我已经尝试在渲染代码中调用pushMatrix和popMatrix,并尝试在GL11初始化代码中定义视口,但似乎什么都不起作用。我的代码如下:
Logging和Info类只是一些控制System.out并存储静态变量的类的静态引用。它们不影响LWJGL或OpenGL,因此我没有看到包含它们的必要性。
在我的构建路径中,我有lwjgl.jar、lwjgl_util.jar和slick_util.jar,并且本机库已正确链接到lwjgl.jar。启动项目时没有错误,输出正常。我不知道为什么仍然出现黑屏。如果有用的话,我正在按照this教程系列创建我的项目,视频中似乎工作正常。
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);
}
}
Logging和Info类只是一些控制System.out并存储静态变量的类的静态引用。它们不影响LWJGL或OpenGL,因此我没有看到包含它们的必要性。
在我的构建路径中,我有lwjgl.jar、lwjgl_util.jar和slick_util.jar,并且本机库已正确链接到lwjgl.jar。启动项目时没有错误,输出正常。我不知道为什么仍然出现黑屏。如果有用的话,我正在按照this教程系列创建我的项目,视频中似乎工作正常。
glVertex2f(800f,600f)
作为你的第二个点。 - genpfault