【问题标题】:Java - LWJGL - OS X Retina SupportJava - LWJGL - OS X 视网膜支持
【发布时间】:2013-11-10 21:15:58
【问题描述】:

我一直在寻找一种解决方案,以便在配备 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();
    }
}

【问题讨论】:

    标签: java lwjgl retina-display


    【解决方案1】:

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

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

    尝试类似:

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

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

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

    【讨论】:

    • 天哪,你说得对。我试图解决一个不是问题的问题:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多