MainMenuViewController と GLKViewConrtroller である GameViewController があります。
メイン メニューから GameViewController に初めて移動すると、すべてが正常にレンダリングされます。メイン メニューに戻ると、GameViewController とそのビューの割り当てが解除されます (ログに記録しました)。
ゲームに戻ると、空白の画面が表示され、OpenGL に関して何もレンダリングされません。UIKit を使用したオーバーレイ テスト メニューはまだあります。
これは、GameViewController の dealloc メソッドで OpenGL を破棄する方法です。最後の 5 行は、それを機能させるために追加されているため、それらの有無にかかわらず機能しません。
- (void)tearDownGL {
[EAGLContext setCurrentContext:self.context];
glDeleteBuffers(1, &_vertexBuffer);
glDeleteVertexArraysOES(1, &_vertexArray);
self.effect = nil;
_program = nil;
glBindVertexArrayOES(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindTexture(GL_TEXTURE_2D, 0);
[EAGLContext setCurrentContext: nil];
}