Я полагаю, у вас проблемы с тем, что текстура не отображается правильно?
Я не знаю, что стоит за OpenGL, но это моя гипотеза:
Каждый раз, когда вы возвращаетесь в EAGLView, EAGLContext из EAGLView изменяется. (если вы копировали и вставляли из шаблона OpenGLES) Текстуры могут быть загружены только после того, как контекст находится в правильном состоянии, иначе вы не сможете загрузить любую текстуру. Теперь, выходя из EAGLView и возвращаясь, вы создаете новый EAGLContext из initWithCoder: (NSCoder *) coder:
context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];
if (!context || ![EAGLContext setCurrentContext:context]) {
[self release];
return nil;
}
Так, как мы можем сохранить этот контекст? Я делаю это глобальным. Просто как тот. И когда EAGLView нужно создать еще раз, попросите его проверить, является ли «глобальный» EAGLContext нулевым или нет. Если это ноль, просто создайте его экземпляр, иначе ничего не делайте. И никогда не выпускайте и не освобождайте этот глобальный EAGLContext, если вы не хотите выйти из своей программы.
Это работает для меня, но, опять же, моя гипотеза выше не может быть верной. Если кто-нибудь знает реальную вещь, пожалуйста, читайте мне лекции. Я также смиренно нуждаюсь в руководстве. Я хочу по-настоящему знать, почему это происходит и почему мы должны это делать.
И, кстати, это отвечает на ваш вопрос, Дженисек?