2013-10-14 127 views
0

我试图使用Visual C++应用我的顶点着色器内变换在VisualStudio2012但是当我尝试使用的OpenGL glProgramUniform ___()会导致程序崩溃

glProgramUniform1f()

或glProgramUniform功能的任何其他变种它只是崩溃,并给了我这个错误 Unhandled exception at 0x7513C9F5 in Lab1.exe: 0xC0000005: Access violation executing location 0x00000000.

我尝试了不同的机器上运行的代码,并运行良好,有什么明显的是,可能会造成这个?

我无法想象,这是不能够处理图形处理,因为我有一个NVIDIA650米

+0

对于(OpenGL)使用错误,不同的驱动程序可能或多或少健壮。一个不正确的OpenGL命令可能会在驱动程序/系统A上被忽略,而它会导致驱动程序/系统b崩溃。请记住,驱动程序是为了性能而编写的,很可能不会执行强化错误检查等。我喜欢用gDebugger来捕获OpenGL错误,这样我就不必用glGetErrors污染我的代码。 – Marius

+0

谢谢我会给你一看,看看它是否可以解决我的问题,并希望解决方案 – Cob50nm

+2

此问题与您的驱动程序和/或扩展加载代码不执行'GL_EXT_direct_state_access'或'GL_ARB_separate_shader_objects'有关。您将不得不使用'glUseProgram(...)'来建立当前绑定的GLSL程序,然后设置您的制服来代替这些扩展。这适用于英特尔,梅萨和苹果的OpenGL实现,如果你想在使用'glProgramUniform__(...)'的时候使你的代码变得可移植,你将不得不编写两条代码路径,不幸的是: - \ –

回答

0

我发现这个问题我的电脑,有两种方法可以做到这一点

glProgramUniform1f()

这并没有为我工作,

glUseProgram(shaderProgramID); 

glUniform1f(transformLoc, 0.5); 

该做的工作