OpenGL glBufferStorage 崩溃

OpenGL glBufferStorage crashes

每当我调用 glBufferStorage(...) 时,随后的 glBindBuffer(..) 总是崩溃。例如:

    glBindBuffer(GL_SHADER_STORAGE_BUFFER, 1);
    glBufferStorage(GL_SHADER_STORAGE_BUFFER, sizeof(unsigned int) * 100, NULL, GL_DYNAMIC_STORAGE_BIT | GL_MAP_WRITE_BIT | GL_MAP_READ_BIT );

    glBindBuffer(GL_SHADER_STORAGE_BUFFER, 2); //  <- CRASH HERE!

如果我删除 glBufferStorage(...) 调用,后续的 glBindBuffer 调用不会崩溃!

这段代码在我的桌面上正常工作,在 GTX650 Ti 和 PhenonII x6 下,通过 VS2015 上的 NugeT 安装了 openGl(nupengl.core 包)。然后我将整个项目文件夹粘贴到我的笔记本(GeForce 740M / i7),删除openGl nuget包并重新安装它。

我该如何继续调查问题所在?这是逻辑错误还是gpu驱动错误?

我能做到。

如前所述,我将我的项目从台式机移到了笔记本电脑上。我的笔记本电脑对 OpenGL 的支持比台式机更新,但我的笔记本电脑使用的是 CPU 显卡(英特尔高清显卡)而不是专用 GPU GeForce 740M。

这样,我的 OpenGL 程序在不支持某些较新的 OpenGL 功能(例如 GL_SHADER_STORAGE_BUFFER 目标的设备上执行,这就是它崩溃的原因。