我正在试验OpenGL 2.x和3.x教程。 程序编译和链接,但然后段看似无辜的线路,如
glGenBuffers (1, &m_buffer);
我的main()
以glewInit
和glutInit
。 OpenGL 1程序编译运行良好,似乎是由glew包装的新function。
一个教程说,我应该尝试其他任何事情之前,这个testing:
if (false == glewIsSupported ("GL_VERSION_2_0"))
即使将版本string更改为GL_VERSION_1_0
,该testing也总是失败。
#define GL_VERSION_1_3 1
是GL / gl.h中最高的定义,没有GL / gl3.h或GL / GL3目录。
apt
说我已经安装了freeglut3和freeglut3-dev,还有mesa-common-dev,libglew-1.6和libgl1-mesa-dev,但是似乎没有任何可用的libgl3 *软件包。
这里有一些驱动程序的信息(我没有专有的驱动程序,集成的英特尔Ivy Bridge显卡与Nvidia额外的卡,都是我相信OpenGL 1.4兼容)
#> glxinfo | grep version server glx version string: 1.4 client glx version string: 1.4 GLX version: 1.4 OpenGL version string: 3.0 Mesa 9.0 OpenGL shading language version string: 1.30
这一切都让我颇为困惑。
是否应该安装特定的OpenGL2 / 3/4软件包,或者从理论上来说,它是相同的开发包(对于Ubuntu)?
为什么GL_VERSION_1_3是最高定义的版本,而glGenBuffers直到1.5版才被引入?
为什么glewIsSupported即使在1.0版本中也失败了?
我得到的印象是,我没有实际实现API的库和/或驱动程序,但似乎我根据glxinfo,这使得我认为有开发库有问题,但我没有一个关于那里发生了什么的连贯的图片。
基本上,我需要做什么才能让我的程序编译/链接/运行?
我知道Ubuntu不是一个伟大的开发环境,但请不要build议我改变发行版。 一定有办法!
我的
main()
以glewInit
和glutInit
不。 在glutCreateWindow()
返回之前,您不会获得当前GL上下文。 之后你可以调用glewInit()
和glewIsSupported()
。
像这样的东西:
#include <GL/glew.h> #include <GL/glut.h> ... int main( int argc, char** argv ) { glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE ); glutInitWindowSize( 300, 300 ); glutCreateWindow( "OpenGL" ); glewInit(); ... return 0; }