创建 VertexArray 时出现分段错误
Posted
技术标签:
【中文标题】创建 VertexArray 时出现分段错误【英文标题】:Segmentation fault when creating VertexArray 【发布时间】:2017-06-02 15:33:05 【问题描述】:当我调用glGenVertexArrays()
时出现分段错误。我尝试设置glewExperimental = GL_TRUE
,但仍然收到错误消息。这是我的小代码。
#include <GL/glew.h>
#include <GL/gl.h>
#include <iostream>
int main(int argv, char **argc)
glewExperimental = GL_TRUE;
glewInit();
GLuint vao = 0;
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
std::cout << "WHY?" << std::endl;
return 0;
【问题讨论】:
在使用 glew 或任何 gl-command 之前尝试创建一个 gl-context 并将其设置为当前。 【参考方案1】:您永远不会验证 glewInit()
是否返回 GLEW_OK
(它不会因为您没有当前的 GL 上下文)所以 glGenVertexArrays()
和 glBindVertexArray()
仍然是 NULL 函数指针。
Calling NULL is bad.
您还应该通过 GL 版本检查 (if(GLEW_VERSION_3_0)...
) 或扩展 (if(GLEW_ARB_vertex_array_object)...
) 来检查当前 GL 上下文是否支持 VAOs。
至于创建 GL 上下文并使其成为当前版本,我推荐 SDL2 或 GLFW3。
【讨论】:
哦是的.. GL 上下文...我现在觉得有点傻。以上是关于创建 VertexArray 时出现分段错误的主要内容,如果未能解决你的问题,请参考以下文章