在 Cygwin 中 运行 OpenGL 应用程序时出错:GLXBadFBConfig

Error when running OpenGL application in Cygwin: GLXBadFBConfig

我正在 运行使用 glew 和 freeglut 在 Cygwin/X 中创建一个演示程序。该程序要求 OpenGL 3.3。我收到此错误:

X Error of failed request:  GLXBadFBConfig
  Major opcode of failed request:  149 (GLX)
  Minor opcode of failed request:  34 ()
  Serial number of failed request:  386
  Current serial number in output stream:  385

导出LIBGL_DEBUG=verbose时,返回如下:

libGL: enabled GLX_SGI_make_current_read
libGL: enabled GLX_SGI_swap_control
libGL: enabled GLX_MESA_swap_control
libGL: enabled GLX_SGIX_pbuffer
libGL: enabled GLX_ARB_multisample
libGL: enabled GLX_SGIS_multisample
libGL: enabled GLX_ARB_create_context
libGL: enabled GLX_ARB_create_context_profile
libGL: enabled GLX_MESA_copy_sub_buffer
X Error of failed request:  GLXBadFBConfig
  Major opcode of failed request:  149 (GLX)
  Minor opcode of failed request:  34 ()
  Serial number of failed request:  386
  Current serial number in output stream:  385

我运行在 Xterm 中运行程序,它是从环境

开始的
export LIBGL_USE_WGL=1

glewinfo | grep OpenGL returns 如下:

OpenGL version 4.5.13397 Compatibility Profile Context 15.200.1046.0 is supported

但是如果我使用Mesa,它只支持OpenGL 3.0

我使用

指定 OpenGL 版本
glutInitContexVersion(3, 3)

,GLSL着色器中的版本字符串为

#version 330

我已经升级了 Windows 中安装的所有驱动程序。

这个程序运行在SDK提供的here下很好,没有问题,它使用SDK加载OpenGL函数。但是我想要 运行ning 没有 SDK,所以我使用 glew。

我想运行这个程序在Windows,所以我想继续使用Cygwin/X。我是否必须安装一些额外的 Cygwin 软件包或使用一些额外的参数配置 Cygwin/X?

您尝试的是 运行 OpenGL 通过 Cygwin X11 服务器使用 GLX。 Windows GDI 服务器上的 Cygwin X.org 根本不支持您请求的 OpenGL 配置文件。

当谈到用于访问 GPU 的 API 时,您应该始终使用 native 端口,在您的情况下,这意味着链接普通的 Windows opengl32.lib(而不是 Cygwin 的 libGL.so)并使用使用 WGL 而不是 GLX 的 FreeGLUT 和 GLEW 构建。

最简单的方法不是使用 Cygwin,而是使用 MinGW。