Coco2d 2.1 and Xcode 7 iOS 9 crash ccShader

前端 未结 4 1096
离开以前
离开以前 2020-12-25 15:23

I tested Xcode 7 with but my cocos2d 2.1 games crash on simulator or on devices:

ccShader_PositionColorLenghtTexture_frag.h

2015-06-15 22:36:13.319 N         


        
4条回答
  •  [愿得一人]
    2020-12-25 15:47

    I'm "rae" on forum.cocos2d-objc.org and I might as well put my answer here as well, since all roads lead to StackOverflow. :-)

    If you are using an older release of Cocos 2D, this may help. I edited CCGLProgram.m to change the beginning of the -(BOOL)compileShader: method thusly:

    #define EXTENSION_STRING "#extension GL_OES_standard_derivatives : enable"
    static NSString * g_extensionStr = @EXTENSION_STRING;
    
    - (BOOL)compileShader:(GLuint *)shader type:(GLenum)type byteArray:(const GLchar *)source
    {
        GLint status;
    
        if (!source)
            return NO;
    
        // BEGIN workaround for Xcode 7 bug
        BOOL hasExtension = NO;
        NSString *sourceStr = [NSString stringWithUTF8String:source];
        if([sourceStr rangeOfString:g_extensionStr].location != NSNotFound) {
            hasExtension = YES;
            NSArray *strs = [sourceStr componentsSeparatedByString:g_extensionStr];
            assert(strs.count == 2);
            sourceStr = [strs componentsJoinedByString:@"\n"];
            source = (GLchar *)[sourceStr UTF8String];
        }
    
        const GLchar *sources[] = {
            (hasExtension ? EXTENSION_STRING "\n" : ""),
        #ifdef __CC_PLATFORM_IOS
            (type == GL_VERTEX_SHADER ? "precision highp float;\n" : "precision mediump float;\n"),
        #endif
            "uniform mat4 CC_PMatrix;\n"
            "uniform mat4 CC_MVMatrix;\n"
            "uniform mat4 CC_MVPMatrix;\n"
            "uniform vec4 CC_Time;\n"
            "uniform vec4 CC_SinTime;\n"
            "uniform vec4 CC_CosTime;\n"
            "uniform vec4 CC_Random01;\n"
            "//CC INCLUDES END\n\n",
            source,
        };
        // END workaround for Xcode 7 bug
    

    It's a hack, but it works for up to Xcode 7 beta 2. Hope this is helpful to someone googling for this.

    Reid

提交回复
热议问题