GLKView не изменит формат пикселей
Есть проблема с 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;
Как я могу получить это? Что здесь не так? Спасибо.