2

我正在使用(非常)低端图形适配器(intel g31)。

我正在编写一个使用 VBO 和着色器(GLSL 1.2)的 OpenGL 程序。该程序编译完美,但是当它调用时glLinkProgram(),抛出异常:

Unhandled exception at 0x1027101A (ig4icd32.dll) in Test.exe: 0xC0000005: Access violation reading location 0x00000000.

我使用 glew 的 glewinfo.exe 和 OpenGL Extensions Viewer 来查看是否glLinkProgram()存在——它确实存在。其他密切相关的功能(glCreateProgram()glCreateShader()glCompileShader()等)也可以按预期工作。

问题的实际根源可能是什么?这是一个问题还是glew的错误?是我司机的问题吗?

我已经设置glewExperimentalGL_TRUE它解决了我的许多其他问题。

编辑:我也使用glLinkProgramARB()并产生了与上面相同的错误。

4

2 回答 2

2

鉴于ig4icd32.dll是英特尔的驱动程序,这就是它崩溃的地方,我猜英特尔的驱动程序正在崩溃。

它不应该那样做,但不要难过。英特尔以糟糕的 OpenGL 驱动程序而闻名。最好尽可能避免它们。

于 2012-10-04T06:30:31.373 回答
0

我在 Intel mobile 4 express 芯片组上遇到了同样的问题,着色器编译得很好,但是在链接实际程序时抛出异常,即使是微不足道的顶点或片段着色器也是如此。我没有使用 glew,在我的程序中 glLinkProgram 是这样调用的:

   ((PFNGLLINKPROGRAMPROC)wglGetProcAddress("glLinkProgram"))(p);

然后我通过首先获取指针,然后调用实际函数来解决这个问题。我不知道为什么它会以这种方式工作。

    PFNGLLINKPROGRAMPROC glLinkProgram = ((PFNGLLINKPROGRAMPROC)wglGetProcAddress("glLinkProgram"));
glLinkProgram(p);

我尝试更好地调试第一条语句,以便找到程序崩溃的原因。

于 2012-10-16T08:59:21.843 回答