1

这是一个非常奇怪的问题。

我有一个非常简单的着色器,带有一个统一的 vec4,在使用 GLEW 和 GLFW 的程序中运行。该程序在我运行该程序的几台装有 nVidia 显卡的机器上运行良好。

问题是,当我切换到带有 Intel Graphics 3000 芯片(支持 OpenGL 3.1,我的目标版本)的笔记本电脑时,任何尝试设置统一变量值的函数调用(glProgramUniform4f、glProgramUniformMatrix4fv、其他任何东西) ),游戏因访问冲突而崩溃。

此外(我知道这不是直接的问题,但我认为它可能与解决方案有关),在 nVidia 机器上调用 glGetUniformLocation 返回较小的值,而在 Intel 机器上的相同调用返回较大 (> 6 位)值。

我会发布代码,但我不太确定会有什么帮助。如果您没有找到解决方案,但您知道我应该发布什么样的代码,请告诉我,我很乐意为您效劳!

谢谢!

4

1 回答 1

0

傻我!

glProgramUniform... 方法仅在 OpenGL 4.x 中可用,在 3.1 中不可用。

为了解决这个问题,我简单地确保我想要更改的程序是绑定的,然后使用相应的 glUniform... 方法来代替。

于 2013-05-10T22:30:41.640 回答