如何在cygwin中使用当前版本的opengl?

我一直在用Cygwin使用OpenGL几个月来编程一些3D应用程序。 我现在想尝试使用诸如顶点缓冲对象之类的东西来编写一些稍微更先进的技术。 但是,我注意到我遇到了一个障碍:当我在程序中使用glGetString(GL_VERSION) ,它会吐出1.4。

我用这些标志编译我的程序: -lGL -lglut -lGLU -lGLEW并包含这些标头: freeglut.h glew.h 我已经选择了与X11库和Windows窗口链接,如此处所述。 我目前的OpenGL程序可以编译并运行(因为到目前为止,我已经使用了更早的功能 - OpenGL 1.4之前的版本)。

我有一台带有ATI FirePro V4800(FireGL)图形卡的新台式计算机,可以支持OpenGL 4.1。 我安装了最新的驱动程序,它通过了程序提供的测试:OpenGL Extensions Viewer。 此外,该程序还显示4.1以下的所有扩展可用于我的图形卡。

在最后一个答案中有一个简短的提到,说cygwin可能想要使用较老的dll(不支持着色器的dll等)。 这是一个cygwin问题吗? cygwin会不会识别我的最新驱动程序,并向我提供OpenGL 4.1中的很酷的东西? 或者我没有链接到正确的库?

UPDATE

在了解了Cygwin的X Server如何工作后,我想我应该切换到Freeglut的本地Windows库。 我抓住了在这里找到的预编译的二进制文件,并将这些文件放在适当的目录中以便与它们链接。 重新编译后,我可以使用OpenGL中的所有选项作为我的图形卡许可证(4.1)。


当使用Cygwin的X服务器时,使用-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
[...]
链接地址: http://www.djcxy.com/p/10601.html

上一篇: How to use current version of opengl in cygwin?

下一篇: Maven project in IntelliJ just went all bad on me