微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

glGenVertexArrays 导致分段错误,如何正确设置 OpenGL 上下文?

如何解决glGenVertexArrays 导致分段错误,如何正确设置 OpenGL 上下文?

我正在尝试编写一个简单的三角形。但是,每当我运行 glGenVertexArrays(1,&VertexArrayID) 时都会导致分段错误

SDL_Init(SDL_INIT_VIDEO);

SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK,SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION,3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MInor_VERSION,2);
SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE,8);

SDL_Window* window = SDL_CreateWindow("OpenGL",SDL_WINDOWPOS_CENTERED,WINDOW_WIDTH,WINDOW_HEIGHT,SDL_WINDOW_OPENGL);
SDL_GLContext context = SDL_GL_CreateContext(window);

SDL_Event event;
SDL_bool quit = SDL_FALSE;

gluint VertexArrayID;
glGenVertexArrays(1,&VertexArrayID); // This causes crash

在这里找到了完全相同的东西OpenGL Segfaults on glGenVertexArrays但是

我忘记设置 OpenGL 上下文。现已全部修复。

没有帮助,因为我相信我已经创建了一个 OpenGL 上下文 SDL_GLContext context = SDL_GL_CreateContext(window);

如何正确设置 OpenGL 上下文?

解决方法

你必须Initialize GLEW。创建 OpenGL 上下文后立即调用 glewInit

SDL_GLContext context = SDL_GL_CreateContext(window);

if (glewInit() != GLEW_OK)
{
    // error handling
    // [...]
}

请注意,如果成功,glewInit 将返回 GLEW_OKglewInit 初始化 OpenGL 函数的函数指针。如果尝试通过未初始化的函数指针调用该函数,则会发生分段错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。