OpenGL glBufferStorage崩溃

时间:2016-01-29 22:33:13

标签: c++ opengl visual-studio-2015 opengl-3

每当我调用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(nupengl.core包)上通过NugeT安装openGl。然后我将整个项目文件夹粘贴到我的笔记本(GeForce 740M / i7),删除了openGl nuget包并重新安装。

我该如何着手调查什么是错的?这是逻辑错误还是gpu驱动程序错误?

1 个答案:

答案 0 :(得分:0)

我能做到。

如上所述,我将项目从桌面移动到了笔记本电脑。我的笔记本电脑拥有比桌面更新的OpenGL支持,但我的笔记本电脑使用CPU图形(英特尔高清显卡)而不是专用的GPU GeForce 740M。

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