Xcode 6 iOS SDK 8.0 in Yosemite is giving me errors for OpenGL ES2 code which compiles fine under Xcode 5
GLuint depthStencilRenderbuffer;
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthStencilRenderbuffer);
glRenderbufferStorageOES(GL_RENDERBUFFER_OES,
GL_DEPTH24_STENCIL8_OES,
self.view.bounds.size.width,
self.view.bounds.size.height);
Generates errors:
line 2:
Conflicting types for 'glBindRenderBufferOES'
Use of undeclared identifier 'GL_RENDERBUFFER_OES'
line 3:
implicit declaration of contain 'glBindRenderBufferOES' is invalid in C99
Edit: OK, I can get things working again by substituting:
GLuint depthStencilRenderbuffer;
glBindRenderbuffer(GL_RENDERBUFFER, depthStencilRenderbuffer);
glRenderbufferStorage(GL_RENDERBUFFER,
GL_STENCIL_INDEX8,
self.view.bounds.size.width,
self.view.bounds.size.height);
Still - I don't know why this change is needed and I'd appreciate some further insight as to what's going on here.
Try:
#import <OpenGLES/ES2/glext.h>
or
#import <OpenGLES/ES3/glext.h>
works for me.
Without it, app which correctlyworking on xcode 6 + ios7 can find GL_FALSE and others..
I think @reto-koradi's comment is correct. I had a problem in my code that was similarly broken in iOS8. They've changed how some of the headers include other headers so here are the steps I took:
- Got to Xcode5 and locate the same line that is broken in Xcode6/iOS8.
- Command-click that link and find out which header file it's in.
- Go back to Xcode6/iOS8 and find that file.
For me it was #import <OpenGLES/ES2/glext.h>
because some of the glextensions I was using was missing.
来源:https://stackoverflow.com/questions/24024764/errors-showing-for-oes-opengl-statements-in-xcode-6-for-ios8