Я работаю над iOS, основанным на OpenGL, в течение последних нескольких месяцев. За это время я создал как основной UIWindow, так и один UIView в коде, в отличие от использования раскадровки. Важно отметить, что я создаю экземпляр EAGLView (используемый во многих примерах Apple), который наследуется от UIView.Приложение iOS: OpenGL Views в приложении на основе раскадровки
Кодовая база, с которой я работаю, довольно обширна, и среди прочего она использует отдельный поток рендеринга. Я вернусь к этому вопросу в конце этого сообщения.
Имея это в виду, я сейчас нахожусь в точке, что хочу добавить поддержку собственного интерфейса. Для этого я использую раскадровку (в первый раз). Моя текущая настройка состоит из основного/корневого представления с двумя кнопками. Каждая кнопка использует modal segue для размещения нового вида на экране.
Чтобы повторно использовать как можно больше кода, я указал, что виды, которые я перехожу, имеют тип EAGLView (в отличие от UIView). Единственное изменение, которое я должен был сделать, это то, что вместо инициализации с помощью initWithFrame я теперь инициализирую «initWithCoder».
Помимо перемещения на раскадровку ничего в базе кода не изменилось. Однако, когда я перехожу к EAGLView, ничего не отображается - все, что я вижу, является белым. Я не решаюсь использовать GLKit, потому что он дублирует большую часть функциональности, которую я уже написал (у меня было все, что было отлично, до использования раскадровки). Кроме того, GLKit обеспечивает обратный вызов для рендеринга, тогда как у меня есть отдельный поток рендеринга.
Мой сценарий очень похож на этот пост:
OpenGL iOS view does not paint
У меня есть проверки ошибок GL для каждого вызова (или для каждой группы вызовов), и никаких ошибок не сообщается. Еще более странно то, что когда я беру кадр OpenGL ES для отладки (в Xcode), отладчик фактически показывает контент, который я ожидаю увидеть.
Любые идеи здесь? Я в тупике.