2013-06-25 5 views
0

Я работаю над 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), отладчик фактически показывает контент, который я ожидаю увидеть.

Любые идеи здесь? Я в тупике.

ответ

0

Пожалуйста, попробуйте следующее:

  1. Убедитесь, что вы перестанете рендеринга в представлении, что вы segueing от (остановки, и т.д.) - это мнение еще жив, так как вы только толкнул новый EAGLView сверху из этого.
  2. Используйте XCode's OpenGL ES Frame capture для отладки вашего состояния OpenGL в новом представлении. Убедитесь, что вам не хватает привязки к текстурам или другим объектам.
  3. Если вышеописанное не работает - напишите простейший способ рендеринга (например, простой квадратик) и отлаживайте этот код.

 Смежные вопросы

  • Нет связанных вопросов^_^