Java - LWJGL - OS X Retina支持

时间:2013-11-10 21:15:58

标签: java lwjgl retina-display

我搜索了很长时间以寻找在带有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();
    }
}

1 个答案:

答案 0 :(得分:1)

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

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

尝试类似:

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

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

一般情况下,如果你实际上没有显示任何内容,那么你就会看到图形驱动程序和内存的奇思妙想,最终会出现在屏幕上。如果我使用了您的代码,我会在窗口中看到以下内容:

Garbage Display Output