创建 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 时出现分段错误的主要内容,如果未能解决你的问题,请参考以下文章

访问共享内存时出现分段错误

从堆栈读取时出现分段错误

将结构插入地图时出现分段错误

删除时出现分段错误

分配时出现分段错误[重复]

在 C 中创建大型数组时出现分段错误