Lwjgl3Application从1.9.10升级至1.9.11及更高版本后Mac端绘制性能下降
问题根因
该异常是libGDX 1.9.11版本对Lwjgl3后端的默认帧提交逻辑调整后,与2014款MacBook Pro搭载的Intel Iris系列核显的OpenGL驱动不兼容导致:渲染线程生成的帧和屏幕垂直刷新时机错位,所以会出现水平分段渲染、带状伪影、感知卡顿但Gdx.graphics.getFramesPerSecond()统计帧率正常的情况,因为统计的是渲染完成的帧数,而非实际显示到屏幕的有效帧数。
修复方案
可按优先级尝试以下方案:
- 方案1:显式配置Lwjgl3垂直同步与帧缓冲参数,绝大多数场景下可解决问题。在
Lwjgl3ApplicationConfiguration初始化时添加如下配置:config.useVsync(true); config.setSwapInterval(1); config.setForegroundFPS(60); // 显式指定双缓冲、深度/模板位参数,适配旧Intel核显 config.setBackBufferConfig(8, 8, 8, 8, 16, 0, 2); - 方案2:若方案1无效,可临时切换到Lwjgl2后端(即测试正常的
LwjglApplication),旧款Intel核显的Mac设备对Lwjgl2的适配成熟度远高于Lwjgl3,无兼容性问题。 - 方案3:如果必须使用Lwjgl3且方案1不生效,可将libGDX的Lwjgl3依赖包单独锁定到1.9.10版本,其余依赖保持高版本即可。
修正后的启动器代码
public class DesktopLauncher { public static void main (String[] arg) { final Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration(); // 添加修复配置 config.useVsync(true); config.setSwapInterval(1); config.setForegroundFPS(60); config.setBackBufferConfig(8, 8, 8, 8, 16, 0, 2); new Lwjgl3Application(new MyGdxGame(), config); } }
内容的提问来源于stack exchange,提问作者user3203425
相关产品推荐
相关产品推荐

