GLKView不会改变像素格式

时间:2015-02-13 12:43:24

标签: opengl-es glkview eaglcontext

有一个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;

我怎样才能得到它?这有什么不对?谢谢。

0 个答案:

没有答案