【发布时间】:2018-03-19 12:26:08
【问题描述】:
抱歉标题有点模糊,但我遇到了一个非常模糊的错误。
我有一个用 MSVC 编写的 C++ 项目,它使用 GLEW 和 GLFW3,以便我可以使用 OpenGL 4.3 计算着色器。该项目在我的带有 AMD 显卡的台式机上运行良好,但是在我的带有 i5-4300u 的笔记本电脑上,我遇到了一个令人困惑的小例外:
Examples.exe 中的 0x00007FFE99113E4A (ig75icd64.dll) 引发异常:0xC0000005:访问冲突读取位置 0x0000000000000028。
每当我调用glDispatchCompute(x,y,z) 后跟glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT) 时都会发生这种情况。
GLEW 和 GLFW 在我调用这段代码时肯定都会被初始化并且没有得到任何输出:
int glfw_err = glfwInit();
if (glfw_err == GLFW_FALSE)
{
printf("ERROR INITIALIZING GLFW\n");
glfwTerminate();
return;
}
和:
GLenum glew_err = glewInit();
if (glew_err != GLEW_OK) {
printf("ERROR INITIALIZING GLEW: %s\n", glewGetErrorString(glew_err));
return;
}
例外中提到的ig75icd64.dll 是一个英特尔显卡驱动程序库,我确实在网上找到了一些关于损坏驱动程序的提及,但重新安装我的驱动程序似乎并没有修复它。
我确信该项目确实在某个时候在我的笔记本电脑上运行过,这表明这是我为破坏它所做的事情,但我无法证实这一点。英特尔方舟网站还表示集成显卡应该支持 OpenGL 4.3
任何帮助将不胜感激!谢谢!
【问题讨论】:
-
不行,你需要提供minimal reproducible example,也许问题会在过程中自行解决
-
当然 :) 我认为在一个显卡而不是另一个显卡上运行的项目会限制任何解决方案的可验证性。给我几分钟,我会整理一些没有其他项目代码的东西。
标签: c++ opengl intel glew compute-shader