Coco2d 2.1 und Xcode iOS 7 9 crash ccShader
Getestet habe ich mit Xcode 7 mit, aber meine cocos2d 2.1 Spiele crash auf simulator oder auf anderen Geräten:
ccShader_PositionColorLenghtTexture_frag.h
2015-06-15 22:36:13.319 NanoWar[18789:456971] cocos2d: ERROR: 0:12: '' : syntax error: #extension must always be before any non-preprocessor tokens
und
cocos2d: ERROR: 0:26: Invalid call of undeclared identifier 'fwidth'
Dieser Klasse das Spiel zum Absturz bringen
#extension GL_OES_standard_derivatives : enable
#ifdef GL_ES
varying mediump vec4 v_color;
varying mediump vec2 v_texcoord;
#else
varying vec4 v_color;
varying vec2 v_texcoord;
#endif
void main()
{
#ifdef GL_OES_standard_derivatives
#if defined GL_OES_standard_derivatives
gl_FragColor = v_color*smoothstep(0.0, length(fwidth(v_texcoord)), 1.0 - length(v_texcoord));
#else
gl_FragColor = v_color*step(0.0, 1.0 - length(v_texcoord));
#endif
#endif
}
- Diskussion hier (siehe rae ' s Antwort): forum.cocos2d-objc.org/t/xcode-7-ios9-beta/17346/6
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin "rae" auf forum.cocos2d-objc.org und ich könnte genauso gut meine Antwort auch hier, da alle Straßen führen zu StackOverflow. 🙂
Wenn Sie eine ältere Version von Cocos 2D, dies kann helfen. Ich bearbeitet CCGLProgram.m so ändern Sie den Beginn der -(BOOL)compileShader: - Methode folgendermaßen:
Es ist ein hack, aber es funktioniert für bis zu Xcode 7 beta 2. Hoffe dies ist hilfreich, um jemand googeln für diese.
Reid
Akzeptiert die Antwort nicht für mich arbeiten, aber diese Tat.
Gehen Sie zu der Datei mit dem Namen
CCGLProgram.m
Ersetzen Sie die gesamte Methode mit dem Namen
- (BOOL)compileShader:(CLuint *)shader type(GLenum)typebyteArray:(const GLchar *)source
mit dieser Methode
Über die akzeptierte Antwort oben, aber für neuere Versionen von cocos2d:
In CCShader.m ersetzen Sie die Zeilen
mit
HINWEIS: Wollte schreiben Sie diese als Kommentar, aber nicht genug Ruf um einen Kommentar zu schreiben, daher Schreibe dies als Antwort:
Beschriebene Korrektur durch Reid das Problem behoben. Jedoch stürzt es unter iOS 7-Geräte, denn es nutzt
containsString
Methode, die nur in iOS 8 und vorEiner einfachen änderung in der folgende Zeile das Problem behebt:
muss geändert werden: