无法在Ubuntu上运行我自己的OpenGL 3程序

我正在试验OpenGL 2.x和3.x教程。 程序编译和链接,但然后segfault看似无辜的线路,如

glGenBuffers (1, &m_buffer);

我的main()glewInitglutInit 。 OpenGL 1程序编译运行良好,似乎是由glew包装的新功能。

一篇教程说,在尝试其他任何事情之前,我应该进行此测试

if (false == glewIsSupported ("GL_VERSION_2_0"))

即使将版本字符串更改为GL_VERSION_1_0 ,该测试也总是失败。

#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版才被引入?

为什么即使版本1.0,glewIsSupported也会失败?

我得到的印象是,我没有实际实现API的库和/或驱动程序,但似乎我根据glxinfo来做,这使我认为开发库存在问题,但我没有一个关于那里发生的事情的连贯图片。

基本上,我需要做些什么来让我的程序编译/链接/运行?

我知道Ubuntu不是一个很好的开发环境,但请不要建议我改变发行版。 一定有办法!


我的main()glewInitglutInit

不。 在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;
}
链接地址: http://www.djcxy.com/p/38503.html

上一篇: Can't run my own OpenGL 3 programs on Ubuntu

下一篇: No OpenGL 3 headers in Arch Linux