これを投稿した直後に、幸いにも私の答えが見つかりました。深度バッファを有効にするために必要なだけです。
view.drawableDepthFormat = GLKViewDrawableDepthFormat16;
(ビューはあなたのものですGLKView*
)
素敵な説明をしてくれたRay Wenderlichに感謝します:
drawableDepthFormat
OpenGL コンテキストには、必要に応じて、深度バッファーと呼ばれる別のバッファーを関連付けることもできます。これにより、ビューアに近いオブジェクトが遠くのオブジェクトの前に表示されるようになります。
デフォルトでの動作方法は、OpenGL がバッファ内の各ピクセルでビューアに最も近いオブジェクトを格納することです。ピクセルを描画するときは、深度バッファーをチェックして、既にビューアーに近いものが描画されているかどうかを確認し、描画されている場合は破棄します。それ以外の場合は、深度バッファーとカラー バッファーに追加します。
このプロパティを設定して、深度バッファーの形式を選択できます。デフォルト値は GLKViewDrawableDepthFormatNone で、深度バッファーがまったく有効になっていないことを意味します。
ただし、この機能が必要な場合 (通常は 3D ゲームで行います)、GLKViewDrawableDepthFormat16 または GLKViewDrawableDepthFormat24 を選択する必要があります。ここでのトレードオフは、GLKViewDrawableDepthFormat16 を使用することです。アプリが使用するリソースは少なくなりますが、オブジェクトが互いに非常に接近している場合、レンダリングの問題が発生する可能性があります。