这让我很难过。我正在使用Objective C / C在运行OSX Yosemite的Macbook Pro上编写一个OpenGL应用程序。我的应用程序总是在glCompileShader(...)
崩溃,我希望你们中的一个能帮助我找出原因。
所有其他GL3 +功能完美运行,不会产生错误消息或标志。此外,我已经尝试使用GLEW来查看是否可以解决问题,但事实并非如此。如果不是因为我在Macbook上编写了大量的OpenGL应用程序并且之前从未遇到过这个问题,我会把它归结为一个简单的驱动程序错误。
以下是我用来加载和编译顶点着色器的代码:
shaderProgram = glCreateProgram();
const GLchar *v = vertSrc;
shaderVertex = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(shaderVertex, 1, &v, NULL);
glCompileShader(shaderVertex); // This is where it crashes
这是顶点着色器源本身:
const char *vertSrc = {
"#version 150 core\n"
"in vec3 vPosition;\n"
"in vec3 vRotation;\n"
"in vec4 vColor;\n"
"in vec3 vNormal;\n"
"in vec3 vTexture;\n"
"uniform mat4 mModel;\n"
"uniform mat4 mView;\n"
"uniform mat4 mProj;\n"
"void main(){\n"
"gl_Position = (mProj * mView * mModel) * vec4(vPosition.xyz,1.0);\n"
"}\n"
};
最后,这是Apple在应用程序崩溃时生成的问题报告:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00007fff00000000
VM Regions Near 0x7fff00000000:
MALLOC_SMALL 00007fbc64000000-00007fbc65000000 [ 16.0M] rw-/rwx SM=PRV
-->
STACK GUARD 00007fff59b6c000-00007fff5d36c000 [ 56.0M] ---/rwx SM=NUL stack guard for thread 0
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_c.dylib 0x00007fff895d1c43 __findenv + 90
1 libsystem_c.dylib 0x00007fff895d1cc7 getenv + 29
2 libGLProgrammability.dylib 0x00007fff894a504a glpMakeCompiler + 266
3 libGLProgrammability.dylib 0x00007fff894cf9ca ShCompile + 124
4 GLEngine 0x00007fff9351e3bb gleShaderParse + 482
5 GLEngine 0x00007fff93464f36 glCompileShaderIncludeARB_Exec + 490
6 libCarbon.dylib 0x000000010209dd97 myApp_addShaderProgram + 231
7 libCarbon.dylib 0x000000010209dc2f myApp_setShaderGroup + 63
8 main 0x0000000102095b8a main + 458
9 libdyld.dylib 0x00007fff965fa5c9 start + 1
之前是否有人看到此错误或相信他们可以提供帮助?