在Xcode 6 for iOS8中显示OES OpenGL语句的错误

Chr*_* B. 14 opengl-es-2.0 xcode6 ios8

Yosemite中的Xcode 6 iOS SDK 8.0给出了OpenGL ES2代码的错误,它在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);
Run Code Online (Sandbox Code Playgroud)

生成错误:

第2行:

"glBindRenderBufferOES"的冲突类型

使用未声明的标识符'GL_RENDERBUFFER_OES'

第3行:

包含'glBindRenderBufferOES'的隐式声明在C99中无效

编辑:好的,我可以通过替换来重新开始工作:

GLuint depthStencilRenderbuffer;
glBindRenderbuffer(GL_RENDERBUFFER, depthStencilRenderbuffer);
glRenderbufferStorage(GL_RENDERBUFFER,
                      GL_STENCIL_INDEX8,
                      self.view.bounds.size.width,
                      self.view.bounds.size.height);
Run Code Online (Sandbox Code Playgroud)

仍然 - 我不知道为什么需要这种改变,我很欣赏一些关于这里发生了什么的进一步见解.

Nie*_*ved 54

尝试:

#import <OpenGLES/ES2/glext.h>
Run Code Online (Sandbox Code Playgroud)

要么

#import <OpenGLES/ES3/glext.h>
Run Code Online (Sandbox Code Playgroud)

适合我.

没有它,正确处理xco​​de 6 + ios7的应用程序可以找到GL_FALSE和其他..

  • 我遇到了GL_RED_EXT的问题,但对我有用.TNX (4认同)

pll*_*uke 6

我认为@ reto-koradi的评论是正确的.我的代码中有一个问题在iOS8中同样被破坏了.他们改变了一些标题包含其他标题的方式,所以这里是我采取的步骤:

  1. 得到Xcode5并找到Xcode6/iOS8中断的同一行.
  2. 按住Command键并单击该链接,找出它所在的头文件.
  3. 回到Xcode6/iOS8并找到该文件.

对我来说,这是#import <OpenGLES/ES2/glext.h>因为我使用的一些glextensions缺失了.