我花了很长时间寻找解决方案,以便在配备Retina显示屏的MacBook Pro上运行简单的LWJGL应用程序。问题是视网膜显示屏闪烁。但是我只是发现了一些无用的提示。

您知道处理此问题的任何代码解决方案吗?例如更改视口或其他内容?

我要在以下代码中添加些什么?

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

最佳答案

您实际上是否尝试渲染任何东西?

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

尝试类似的东西:

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


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

通常,如果您实际上什么都不显示,那么您会在图形驱动程序和内存方面对屏幕上显示的内容产生异想天开的感觉。如果我使用了您的代码,则会在窗口中看到以下内容:

关于java - Java-LWJGL-OS X Retina支持,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19895287/

10-10 14:41