无法在 Cygwin/X 中启用垂直同步

Cannot enable vsync in Cygwin/X

我正在尝试在 Cygwin 下使用 SDL2 和 OpenGL 编译一个简单的游戏。当我 运行 程序时,我发现 GPU 使用率异常高。然后我发现该程序没有启用VSync。更具体地说,SDL_GL_SetSwapInterval(1) 既不返回 0(成功)也不返回 -1(失败),而是返回一个未记录的值 5。SDL_GetError() returns glXSwapIntervalMESA failed。知道如何解决这个问题吗?

更新:我尝试直接调用glXSwapIntervalMESA,发现返回了GLX_BAD_CONTEXT。现在看来,强制 VSync 的唯一方法是通过显示驱动程序设置。

Cygwin/X 强制您通过运行在 Windows GDI 之上的 X11 服务器进行操作。该 X11 服务器的功能非常有限,并非本书中的所有可选功能都受支持。

如果你不需要X11除GLX以外的部分,那就扔掉它,直接访问图形系统。 Cygwin 和 POSIX 函数也是如此。

即使用 MinGW 在没有 Cygwin 的情况下编译您的程序,以及使用 OS 本机函数进行 OpenGL 上下文创建和管理的 SDL-2 构建。