そのため、私のプロジェクトでは、別のクラスを使用して Buffer.cpp というバッファーを作成しています。ここにコンストラクタがあります
#define GLEW_STATIC
#define GLEW_NO_GLU
#define GLFW_NO_GLU
#include "GL/glew.h"
#include "GL/glfw.h"
Buffer::Buffer(GLenum _type, const void *data, GLsizei _size, GLenum usage) : type(_type), size(_size)
{
...
//Generate Buffer
glGenBuffers(1, &buffer);
...
}
そしてメンバーの定義:
GLuint buffer;
const GLsizei size;
const GLenum type;
Buffer(GLenum, const void*, GLsizei, GLenum);
問題は、たとえば次のコマンドを使用してバッファーを生成しようとしたときです。
Buffer vBuffer(GL_ARRAY_BUFFER, vertexPositions, sizeof(vertexPositions), GL_STATIC_DRAW);
glGenBuffers() でプログラムがクラッシュし、終了ステータスが「-1073741819」になります。私はプログラムをデバッグしようとしましたが、これは私が得たものです:
Program received signal SIGSEGV, Segmentation fault.
私のカードは OpenGL 1.5 をサポートしているので、そうではありません。
また、静的 glew ライブラリを自分でコンパイルしたことにも注意してください。
編集:私は最終的に問題を修正しました。問題は、OpenGL レンダリング コンテキストを作成する前に glewInit() を呼び出していたことです。