我寻找了一个在配备 Retina 显示屏的 MacBook Pro 上运行简单 LWJGL 应用程序的解决方案。问题是 Retina 显示屏闪烁。但我只是发现了无信息的提示。
你知道有什么代码解决方案可以处理这个问题吗?例如更改视口(viewport)或其他什么?
我需要在下面的代码中添加什么?
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 - LWJGL - OS X 视网膜支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19895287/