2014-09-28 4 views
4

Мы собираемся запустить заголовок в iOS appstore, и мы недавно обнаружили, что он не работает на iOS 8. Игра загружается на черный экран, однако все остальное работает, чтобы работать (музыка может быть услышана , он реагирует на сенсорный экран, просто ничего на дисплее).ios 8 opengl es 1.1 прекращено?

Наш двигатель довольно старый и использует OpenGL ES 1.1. Я теперь убежден, что это проблема, поскольку я пробовал другой (старый) учебник, который отображает черный экран.

Я искал в Интернете какие-либо обсуждения об этом, но, похоже, ничего не нашел. У кого-нибудь есть 1.1 приложения, которые они могут подтвердить, либо перестали работать, либо работают?

Теперь я смотрю на задачу обновления двигателя до 2.0, что немаловажно, учитывая размер проекта и тот факт, что мы должны запускаться очень скоро. Было бы неразумно, что Apple просто откажется от поддержки 1.1, не сказав ничего, поэтому я надеюсь, что ошибаюсь в этом.

+0

Я не укусил фрукты, но не можете ли вы попытаться использовать профиль совместимости во время initGL init? – St0fF

+0

Это может стоить связаться с Apple напрямую и сжечь TSI. Руководство по программированию OpenGL ES по-прежнему ссылается на Open GL ES 1.1 в разделе «Выбор версий OpenGL ES для поддержки». Ссылка на документы: https: //developer.apple.com/Library/ios/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/OpenGLESontheiPhone/OpenGLESontheiPhone.html#//apple_ref/doc/uid/TP40008793-CH101-SW6 –

+0

@RoboticCat - Да, , ты прав, я свяжусь с ними сейчас. –

ответ

1

ОК, я добился определенного прогресса. В ответ на мой вопрос OpenGL ES 1.1 НЕ прекращается.

Я не знаю, что изменилось с iOS 8, но, конечно, какой-то код больше не работает. Мне удалось добиться некоторого прогресса, заменив моего главного делегата приложения и GL Viewcontroller одним из учебников, и теперь это рендеринг, хотя и на половине экрана и перекошен.

Итак, чтобы подтвердить, 1.1 в порядке, это проблема с моим кодом.

+0

Любые детали? Я столкнулся с тем же ... –

+0

@graeme даже im сталкивается с той же проблемой. Можете указать фрагмент кода, который ломается – rahulinaction

+0

Извините, ребята, я никогда не получал уведомления о ваших ответах, надеюсь, вы его исправили. –

2

У меня была та же проблема. Исправление было - НЕ addSubview

//[self.window addSubview:glView]; // this produces black screen on ios8 devices 

[self setView: glView]; 

Другой трюк о ios8 является то, что для пейзажа App этот код

const CGRect r = [[UIScreen mainScreen] bounds]; 

возвращает размер экрана пейзаж. Для iOS < 8 он всегда был размером с портретный экран. Итак, теперь я использую max (x, y) для X и min (x, y) для Y.

+0

Может ли кто-нибудь опубликовать проект barebone OpenGL ES 1.1, который работает? Предпочтительно, что использует авторотирование и имеет контроллер отображения навигации. – Rasterman

1

Я исправил проблему, описанную здесь, изменив CGFloats на GLfloats (сюда входят CGPoints, потому что они используют CGFloats.) не имеет ничего общего с OpenGLES 1.1 или 2.0, поскольку у меня была одна и та же проблема в обоих из них.

Проблема заключалась в том, что OpenGL был тем, что CGfloats - это typedef of float на 32-битных устройствах, в то время как они являются двойными на 64-разрядных устройствах. GLfloats предназначены именно для этой цели для решения этой проблемы. GLKVector2 также предоставляется яблоком для решения этой проблемы между 32 и 64-разрядными устройствами.

+1

У меня была такая же проблема после обновления проекта ES 1.1 для iOS, чтобы включить x64. Использование GLFloats, как описано Кевином, исправил проблему для меня. Обеспечение того, чтобы массивы вершин, которые я передал для рисования массивов для типа перечисления GL_FLOAT, были составлены из GLfloats, а CGFloat внутри CGPoints исправил это для меня. Поскольку я нацелен на iiOS, GLKVector2 недоступен. Но я только что создал новую структуру из двух GLfloats. Проблема исправлена. –