为什么glGetString(GL_VERSION)会导致Seg错误?

时间:2011-06-09 06:13:11

标签: c opengl

我正在Fedora 13上学习OpenGL,并注意到对glGetString的调用导致了seg错误。我已经刮了谷歌,但没有解决方案。

代码很简单:

#include <GL/gl.h>

int main() {
    glGetString(GL_VERSION);
    return 0;
}

编译命令:

g++ -lGL main.cpp -o test.bin

运行结果:

$ ./test.bin 
Segmentation fault (core dumped)

OpenGL信息:

$ glxinfo | grep OpenGL
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Intel(R) IGDNG_M GEM 20100328 2010Q1 
OpenGL version string: 2.1 Mesa 7.8.1
OpenGL shading language version string: 1.20
OpenGL extensions:

非常感谢任何想法或参考。

解决方案:

#include <iostream>
#include <GL/freeglut.h>

int main(int argc, char **argv) {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA);
    glutCreateWindow("test");
    glutFullScreen();
    std::cout << glGetString(GL_VERSION) << std::endl;
    return 0;
}

1 个答案:

答案 0 :(得分:14)

我怀疑你甚至可以在没有an OpenGL context的情况下调用glGetString这么简单的东西。