【问题标题】:Segmentation fault when creating VertexArray创建 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 并将其设置为当前。

标签: c++ opengl vao


【解决方案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 上下文并使其成为当前版本,我推荐 SDL2GLFW3

【讨论】:

  • 哦是的.. GL 上下文...我现在觉得有点傻。
猜你喜欢
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多