OpenGL プロジェクトで VBO を使用しようとしています。拡張機能には glew ライブラリを使用し、Windows 処理には glfw を使用しています。VBO アプリケーションを作成しようとするとクラッシュし、
symulator3C.exe の 0x00000000 で未処理の例外: 0xC0000005: アクセス違反
関数 glGenBuffersARB で。これが私のコードです:
GLuint vboId1=0; //this is global variable
void createVBO(){
normalsVBO = (float *) malloc(sizeof(float)*3*(SIZE_X-1)*SIZE_Y*2);
verticesVBO = (float *) malloc(sizeof(float)*3*(SIZE_X-1)*SIZE_Y*2);
if(normalsVBO==NULL) exit(-1);
if(verticesVBO==NULL) exit(-1);
glGenBuffersARB(1, &vboId1); //HERE IT CRASHES!
// bind VBO in order to use
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vboId1);
...
glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(float)*3*(SIZE_X-1)*SIZE_Y*2, verticesVBO, GL_DYNAMIC_DRAW);
glEnableClientState(GL_VERTEX_ARRAY); // activate vertex coords array
glVertexPointer(3, GL_FLOAT, 0, 0);
}
何が悪いのかわからない。もちろん、この関数を呼び出す前に glewInit() を呼び出し、結果は成功です。編集: Visual Studio 2010 を使用しています