0

我一直在寻找一种解决方案,以便在我的配备 Retina 显示屏的 MacBook Pro 上运行一个简单的 LWJGL 应用程序。问题是 Retina 显示屏闪烁。但我只是发现了无意义的提示。

你知道任何代码解决方案来处理这个吗?例如更改视口或其他什么?

我有什么要添加到以下代码中?

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;

public class MainDisplay {
    final int DISPLAY_WIDTH = 640;
    final int DISPLAY_HEIGHT = 480;

    public void start() {
        try {
            Display.setDisplayMode(new DisplayMode(DISPLAY_WIDTH, DISPLAY_HEIGHT));
            Display.create();
        }
        catch(LWJGLException exception) {
            exception.printStackTrace();
        }

        while(!Display.isCloseRequested()) {
            Display.update();
        }

        Display.destroy();
    }
}
4

1 回答 1

1

你真的尝试渲染任何东西吗?

听起来后台缓冲区包含垃圾数据,并且您没有在该循环中绘制任何内容。每次您调用Display.update()它时,它都会翻转后台缓冲区,如果您没有在其上绘制,那么您会得到闪烁的垃圾数据。

尝试类似:

while(!Display.isCloseRequested()) {
    GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
    GL11.glEnd();
    Display.update();
}

在翻转后缓冲区之前清除显示。

一般来说,如果您实际上没有显示任何内容,那么您会随心所欲地考虑图形驱动程序和内存,以了解最终在屏幕上显示的内容。如果我使用了您的代码,我会在窗口中看到以下内容:

垃圾显示输出

于 2013-11-11T00:03:44.970 回答