当前位置: 首页 > 知识库问答 >
问题:

LWJGL OpenGL黑屏

陶博涉
2023-03-14

我刚刚开始学习LWJGL / OpenGL来创建3D游戏,所以我从小处着手,尝试制作一条线(2D)的简单显示。窗口加载正常,大小合适,但显示器上没有绘制任何内容。有一个空白屏幕,我似乎对代码所做的任何更改都不会影响在屏幕上绘制的内容。这可能是因为我对如何正确执行此操作缺乏了解,或者这可能是我的代码/计算机中的问题。我尝试在我的初始化代码中添加和删除各种东西,如glEnable(GL_TEXTURE_2D)和glDisable(GL_TEXTURE_2D),我尝试在渲染代码中调用pushMatrix和popMatrix,我尝试在GL11初始化代码中定义视口,但似乎没有任何工作。我的代码如下:

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);
    }
}

日志和信息类只是对控制系统的某些类的静态引用。输出并存储静态变量。这些不影响LWJGL或OpenGL,所以我认为没有太多的意义。

在我的构建路径中,我有lwjgl.jar、lwjgl_util.jar和slick_util.jar,并且本机正确地链接到lwjgl.jar。我启动项目时没有出错,输出正常。我不知道为什么我还是会黑屏。如果它的任何用途,我按照这个教程系列来创建我的项目,它似乎在视频中工作良好。

共有2个答案

步弘和
2023-03-14

您忘记了调用glClear(GL_COLOR_BUFFER_BIT)。在绘制之前应该始终调用它。

贺高飞
2023-03-14
glOrtho(0f, 800f, 600f, 0f, 0f, 1f);
...
glVertex2f(0f,0f);
glVertex2f(1f,1f);

尝试提交与您的近剪裁平面不重合的几何图形。

或者调整你的近裁剪平面:

glOrtho(0f, 800f, 600f, 0f, -1f, 1f);

我还建议偶尔清除帧缓冲区。

 类似资料:
  • 问题内容: 我的laravel站点以前可以工作,最近我升级到Apache 2.4和PHP 5.5.7。 现在,当我进入laravel.mydomain.com时,我得到一个白色的空白屏幕,apache错误日志,路由等中的任何内容都应该像以前一样正常。 当我在/var/sites/laravel/public/.htaccess中插入无效行时,得到500,.htaccess正在加载。 这是我的.ht

  • 我做了一些研究,看看我是否可以用这种方式解决这个问题,但似乎没有找到任何解决我问题的方法。我发现了这两个问题:为什么我的pygame显示器没有显示任何东西?对为什么PyGame显示屏是黑屏感到困惑。我试图用评论中的建议来解决我的问题,但没有成功,或者问题的原因与我的不同。 当我运行代码时,pygame窗口会显示,但完全是黑色的,但不会调用任何错误。

  • 一般情况下人在什么情况下喝酒?多半朋友聚会聊到兴奋了,或者发生了什么刺激人的大事,比如恋爱了,失恋了,发财了,破产了…… 绝影想这么晚了,又没有什么聚会,BOSSLiu找自己喝酒,肯定是受了什么刺激,毕竟同事一场,还是应该好好开导开导他,于是屁颠屁颠跟他跑到楼下烧烤摊。 BOSSLiu一来就大声武气要了两瓶啤酒,一碟煮花生,两条烤鱼。今天是他们俩最后一次领“生活补助”的日子,BOSSLiu显得特别

  • 我们既蒙怜悯,受了这职分,就不丧胆,乃将那些暗昧可耻的事弃绝了,不行诡诈,不谬讲神的道理,只将真理表明出来,好在神面前把自己荐与各人的良心。(2 CORINTHIANS 4:1-2) 黑魔法 围绕类的话题,真实说也说不完,仅特殊方法,除了前面遇到过的__init__(),__new__(),__str__()等之外,还有很多。虽然它们仅仅是在某些特殊情景中使用,但是,因为本教程是“From Beg

  • 在这学期里,绝影他们班上又出了个不得不提的人物――鸡哥。 鸡哥本来长相很老实,也就是“中国传统式的农民”,但他的不安分和他的长相成鲜明的反比。他老爸极其神秘,是个有正当工作并且很有钱的人,这样来看,莫非是XXX银行行长。后来绝影也有机会见到了他老爸,他和他老爸唯一的区别是他有个好老爸,而他老爸没有。 毫无疑问,鸡哥的电脑在班上甚至这栋寝室都是最好的,那19寸的Samsun显示器就充分说明了问题,据

  • 问题内容: 我想在我的应用中以真实的黑白照片。我也在该网站上搜索了解决方案,但是我总是找到将照片放成灰度的解决方案(例如在本主题中),但这不是我想要的… 我还发现了一个提出这一建议的主题: 但是图像质量太差了… 请问有人有主意吗? 谢谢 问题答案: 如果您希望图像为1位黑白,则可以使用简单的(慢速)阈值算法 但是,根据看起来不太好的东西,要获得更好的结果,您需要使用抖动算法,请参阅算法概述 -这是