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

Cry*_*ryo 10 c opengl

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

代码很简单:

#include <GL/gl.h>

int main() {
    glGetString(GL_VERSION);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译命令:

g++ -lGL main.cpp -o test.bin
Run Code Online (Sandbox Code Playgroud)

运行结果:

$ ./test.bin 
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

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:
Run Code Online (Sandbox Code Playgroud)

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

解:

#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;
}
Run Code Online (Sandbox Code Playgroud)

Nic*_*vre 15

我怀疑你甚至可以在没有OpenGL上下文的情况下调用像glGetString那样简单的东西.

  • 直接命中!谢谢您的帮助. (2认同)