glCompileShader在OSX

时间:2015-11-04 12:41:07

标签: c macos opengl

这让我很难过。我正在使用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

之前是否有人看到此错误或相信他们可以提供帮助?

0 个答案:

没有答案