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;
どうすれば入手できますか?ここで何が問題なのですか?ありがとうございました。