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;

Как я могу получить это? Что здесь не так? Спасибо.

0 ответов

Другие вопросы по тегам