每当我调用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驱动程序错误?
答案 0 :(得分:0)
我能做到。
如上所述,我将项目从桌面移动到了笔记本电脑。我的笔记本电脑拥有比桌面更新的OpenGL支持,但我的笔记本电脑使用CPU图形(英特尔高清显卡)而不是专用的GPU GeForce 740M。
这样,我的OpenGL程序在不支持某些较新的OpenGL功能的设备上执行,例如 GL_SHADER_STORAGE_BUFFER 目标,以及它崩溃的原因。