2016-05-06

cocos2d v2.1 で実行エラー

cocos2d 2.1を Xcode 7.3 でビルドし実行するとエラーが出ます。

環境

cocos2d for iPhone 2.1
Xcode 7.3

状況

実行時にクラッシュします。
cocos2d: ERROR: Failed to compile shader
cocos2d: ERROR: 0:12: '' : syntax error: #extension must always be before any non-preprocessor tokens

対応

CCGLProgram.m の (BOOL)compileShader メソッドを編集します。
  1. // ADD Start
  2. #define EXTENSION_STRING "#extension GL_OES_standard_derivatives : enable"
  3. static NSString * g_extensionStr = @EXTENSION_STRING;
  4. // ADD End
  5. - (BOOL)compileShader:(GLuint *)shader type:(GLenum)type byteArray:(const GLchar *)source
  6. {
  7. GLint status;
  8.  
  9. if (!source)
  10. return NO;
  11. // ADD Start
  12. BOOL hasExtension = NO;
  13. NSString *sourceStr = [NSString stringWithUTF8String:source];
  14. if([sourceStr rangeOfString:g_extensionStr].location != NSNotFound) {
  15. hasExtension = YES;
  16. NSArray *strs = [sourceStr componentsSeparatedByString:g_extensionStr];
  17. assert(strs.count == 2);
  18. sourceStr = [strs componentsJoinedByString:@"\n"];
  19. source = (GLchar *)[sourceStr UTF8String];
  20. }
  21. // ADD End
  22.  
  23. const GLchar *sources[] = {
  24. // ADD Start
  25. (hasExtension ? EXTENSION_STRING "\n" : ""),
  26. // ADD End
  27. #ifdef __CC_PLATFORM_IOS

参考

https://stackoverflow.com/questions/30864055