有一个GLKView的问题,我在这里遇到了很多。首先,我创建EAGLContext上下文并使其成为当前:
EAGLContext* pOpenGLContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];
if(!pOpenGLContext)
return nil;
if(![EAGLContext setCurrentContext:pOpenGLContext])
return nil;
运行正常(我需要版本3,所以它让我感到高兴)!然后我创建GLKView,附加到以前创建的上下文:
GLKView* pOpenGLView = [[GLKView alloc] initWithFrame:Frame context:pOpenGLContext];
没关系。但是这段代码根本没有改变:(
[pOpenGLView setDrawableColorFormat:GLKViewDrawableColorFormatRGBA8888];
[pOpenGLView setDrawableDepthFormat:GLKViewDrawableDepthFormat24];
[pOpenGLView setDrawableStencilFormat:GLKViewDrawableStencilFormatNone];
[pOpenGLView setDrawableMultisample:GLKViewDrawableMultisampleNone];
然后我做了一些最后的事情:
pOpenGLView.delegate = self;
[pMainWindow addSubview:pOpenGLView];
...
但是,在使用GLKViewDrawableStencilFormatNone后,我要求OpenGL提供深度和模板格式......我得到了:
glGetIntegerv(GL_DEPTH_BITS, &OpenGLDepthBits); // = 32 (I need 24)
glGetIntegerv(GL_STENCIL_BITS, &OpenGLStencilBits); // = 8 (I need 0)
我需要关闭模板缓冲区!我需要设置24位格式深度缓冲区。 我也试着这样做:
pOpenGLView.drawableColorFormat = GLKViewDrawableColorFormatRGBA8888;
pOpenGLView.drawableDepthFormat = GLKViewDrawableDepthFormat24;
pOpenGLView.drawableStencilFormat = GLKViewDrawableStencilFormatNone;
我怎样才能得到它?这有什么不对?谢谢。