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



我正在试用OpenGL 2.x和3.x教程。程序编译和链接,但随后在看似无辜的行(如)上出错

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*包可用。

以下是一些驱动程序信息(我没有专有的驱动程序,集成了Intel 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不是一个很好的开发环境,但请不要建议我更改发行版。一定有办法!

我的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;
}

相关内容

  • 没有找到相关文章