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

时间:2014-06-03 20:55:46

标签: opengl-es-2.0 ios8 xcode6

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);

生成错误:

第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);

仍然 - 我不知道为什么需要这种改变,我会对这里发生的事情有进一步的了解。

2 个答案:

答案 0 :(得分:54)

尝试:

#import <OpenGLES/ES2/glext.h>

#import <OpenGLES/ES3/glext.h>

适合我。

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

答案 1 :(得分:6)

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

  1. 找到Xcode5并找到在Xcode6 / iOS8中损坏的同一行。
  2. 按住Command键并单击该链接,找出它所在的头文件。
  3. 返回Xcode6 / iOS8并找到该文件。
  4. 对我来说这是#import <OpenGLES/ES2/glext.h>因为我使用的一些glextensions缺失。