いくつかのパーティクルをシェーダー ストレージ バッファーに格納したいと考えています。glMapBufferRange() 関数を使用してパーティクル値を設定していますが、この関数が呼び出されるたびに常にアクセス違反エラーが発生します。
glGenBuffers(1, &bufferID);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, bufferID);
glBufferData(GL_SHADER_STORAGE_BUFFER, numParticles*sizeof(Particle), NULL ,GL_STATIC_DRAW);
struct Particle* particles = (struct Particle*) glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, numParticles*sizeof(Particle), GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT);
for(int i = 0; i < numParticles; ++i){
//.. Do something with particles..//
}
glUnmapBuffer(GL_SHADER_STORAGE_BUFFER);
代わりに glMapBuffer() を使用すると、すべて正常に動作します。glfw で OpenGL コンテキストを作成し、glew を適切に初期化したことを確認しました。