5

所以这就是问题所在:当我调用glGenTextures时,我遇到了分段错误。

我在 linux 上,这是我目前用来调查此问题的代码:

#include <iostream>
#include <SDL/SDL.h>
#include <GL/gl.h>
#include <GL/glu.h>

int main(int argc, char *argv[])
{
    GLuint texture;
    glGenTextures( 1, &texture );
    return texture;
}

看起来很简单,对吧?好吧,我用 GDB(GNU 调试工具)跟踪了段错误,当我在文件/usr/lib/mesa/libGL.so.1中调用glGenTextures()时,它就会发生。

那是我的视频驱动程序的openGL代码......

有任何想法吗?

4

2 回答 2

10

如图所示的代码没有做任何事情来设置一个有效的OpenGL 上下文,所以它不能使用 OpenGL。

如何做到这一点因平台而异。如果您不想深入了解目标平台的执行方式,您可以使用诸如GLFW之类的东西来相当便携,但这当然会增加依赖性。

于 2012-11-02T12:05:49.780 回答
1

正如用户“展开”所说,您需要初始化 OpenGL 上下文。不过,您可以在没有 3Dparty 库的情况下做到这一点 - 检查这个 NeHe 示例:http ://nehe.gamedev.net/tutorial/texture_mapping/12038/

希望这可以帮助。

于 2012-11-02T12:14:59.653 回答