0

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;

どうすれば入手できますか?ここで何が問題なのですか?ありがとうございました。

4

0 に答える 0