我正在使用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 =详细时,它返回如下:
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 返回如下:
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中安装的所有驱动程序。
这个程序在提供here的SDK下运行良好,没有glew,它使用SDK加载OpenGL函数。但我希望它在没有SDK的情况下运行,所以我使用了glew。
我想在Windows中运行此程序,所以我想继续使用Cygwin / X.我是否必须安装一些额外的Cygwin软件包或使用一些额外的参数配置Cygwin / X?
答案 0 :(得分:0)
您尝试使用GLX通过Cygwin X11服务器运行OpenGL。 Windows GDI服务器上的Cygwin X.org不支持您请求的OpenGL配置文件。
当谈到访问GPU的API时,你应该总是使用 native 端口,在你的情况下意味着,链接到普通的Windows opengl32.lib(而不是Cygwin的libGL.so)和使用FreeGLUT和GLEW构建,使用WGL而不是GLX。
最简单的方法是不使用Cygwin,而是使用MinGW。