Текстуры не рисуются, если используется несколько EAGLViews - PullRequest
4 голосов
/ 16 февраля 2010

У меня небольшая проблема с яблоками EAGLView и Texture2D. Если я создам экземпляр EAGLView и нарисую несколько текстур, он отлично работает. Однако всякий раз, когда я создаю второй экземпляр EAGLView, текстуры в новом представлении не отображаются.
Будучи новичком в OpenGL, я теперь абсолютно точно понимаю, что вызывает такое поведение. Если кто-то хотел бы помочь, я создал небольшой проект, который воспроизводит поведение. Проект можно найти по адресу http://www.cocoabeans.se/OpenGLESBug.zip

Большое спасибо,
Тим Андерссон

Обновление
Я пытался использовать sharegroups, но я не совсем уверен, правильно ли я их использовал. Тем не менее, это немного изменило поведение; вместо рисования текстуры только в первом экземпляре, теперь он рисует текстуру в экземпляре last и в других видах рисует белые прямоугольники. Я не знаю, лучше это или хуже, но по крайней мере что-то появляется в других представлениях сейчас.
Это сводит меня с ума, и я был бы очень признателен, если бы кто-нибудь мог помочь мне с этой проблемой. Я обновил проект на http://www.cocoabeans.se/OpenGLESBug.zip, чтобы отразить изменения.

Приветствия
Тим

Второе обновление
После еще нескольких попыток кажется, что проблема связана с классом Apple Texture2D, хотя я не уверен, что именно вызывает поведение. Я думаю, что лучше всего написать свой собственный класс текстур (это поможет мне понять, как OpenGL обрабатывает текстуры, что, вероятно, пригодится).

1 Ответ

1 голос
/ 17 февраля 2010

(Не загрузили ваш код.)

Контексты рисования OpenGL отличаются, если вы просто используете два EAGLViews (код в этом базовом классе создает и владеет контекстом GL, а также render / frame /буферы глубины).Если вы генерируете / связываете некоторые текстуры в одном контексте, они не будут доступны в другом.Вы можете обмениваться контекстами, если вам нравится использовать общую группу (см. Этот вопрос подробнее: Как использовать OpenGL ES в отдельном потоке на iphone? ).Или определить текстуры (если они маленькие) в обоих местах и ​​т. Д.

...