我一直在使用OpenGL和cygwin几个月来编写一些3d应用程序。我现在想尝试使用诸如顶点缓冲对象之类的东西来编写一些稍微更高级的技术。但是,我注意到我遇到了一个障碍:当我在程序中使用glGetString(GL_VERSION)
时,它会吐出1.4。
我用这些标志编译我的程序:-lGL -lglut -lGLU -lGLEW
并包含这些标题:freeglut.h glew.h
。我已经选择了如针对here所解释的X11库与windows库的链接。我目前的OpenGL程序构建并且能够运行(因为到目前为止,我已经使用了旧功能 - 预OpenGL 1.4)。
我有一台带有ATI FirePro V4800(FireGL)显卡的新台式电脑,可以支持OpenGL 4.1。我安装了最新的驱动程序,它通过了程序提供的测试:OpenGL Extensions Viewer。此外,该程序还显示我的图形卡可以使用4.1及以上的所有扩展名。
在最后一个答案中有一个简短的提及here,说cygwin可能想要使用较旧的dll(不支持着色器等的dll)。这是一个cygwin问题吗? cygwin会不会识别我最新的驱动程序并在OpenGL 4.1中提供很酷的东西?或者我没有链接到正确的库?
更新
在了解Cygwin的X服务器如何工作之后,我想我应该切换到freeglut的本机Windows库。我抓住了预先编译的二进制文件here并将文件放在适当的目录中以链接它们。重新编译后,我可以使用OpenGL中的所有选项,因为我的显卡允许(4.1)。
答案 0 :(得分:3)
使用Cygwin的X-server时,用-wgl选项启动它(当前版本自动执行)然后
export LIBGL_USE_WGL=1
在我发布的机器上,我得到:
$ glxinfo | grep OpenGL
OpenGL vendor string: Intel
OpenGL renderer string: Intel(R) HD Graphics 2500
OpenGL version string: 4.0.0 - Build 9.17.10.3062
OpenGL shading language version string: 4.00 - Build 9.17.10.3062
[...]
取消设置环境变量:
$ glxinfo | grep OpenGL
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.4, 256 bits)
OpenGL version string: 3.0 Mesa 10.3.5
OpenGL shading language version string: 1.30
[...]