Я не думаю, что есть лучший подход. Если у вас есть время для кодирования меню и таблиц рекордов в OpenGL, у вас будет гораздо больше гибкости - вы можете, например, запустить трехмерную анимацию в фоновом режиме.
Если вы кодируете меню, таблицы рекордов и т. Д. С использованием стандартных представлений UIKit и выключаете представление OpenGL, когда они отображаются, то это дает преимущество в том, что кодирование выполняется очень быстро (особенно если вы потратили время на изучение использовать Interface Builder), но это по сути 2d. Даже если вы по-прежнему можете использовать пользовательские графические кнопки и шрифты, чтобы оно выглядело не так, как бизнес-приложение, оно все равно будет выглядеть менее отточенным по сравнению с другими играми в магазине приложений.
То, что вы не хотите делать, это наложить прозрачный UIView поверх вашего представления OpenGL - это будет очень медленно.
Я лично использую сгенерированные Интерфейсным Представлением представления, чтобы получить что-то вроде меню, пока я создаю остальную часть программы. Намерение состоит в том, чтобы заменить это анимированным кодом OpenGL позже. В конце концов, все зависит от того, сколько у вас есть времени.