Я только начал играть с OpenGL ES, в основном на iPad, и заметил некоторые проблемы, на которые я не могу найти ответ. Сначала я попытался использовать два EAGLViews, используя отдельные средства визуализации в одном окне. В основном, представьте пример проекта OpenGL ES в XCode, но с двумя EAGLViews и двумя средствами визуализации и т. Д. Теперь это не похоже на работу в симуляторе, оно показывает только одно из представлений (кажется, что выполняется код визуализации, но только одно представление отображается с помощью openGL), но при запуске на устройстве (iPad с iOS 4.2) оно работает, по крайней мере вид, который приводит к следующему вопросу.
Обновления рендеринга запускаются с использованием CADisplayLink в обоих этих представлениях. Это, однако, вызывает некоторые проблемы. Большую часть времени, спустя короткое время, обновления на одном из представлений прекращаются, а CADisplayLink перестает запускаться. Это происходит только на устройстве, а не в симуляторе. Это можно «исправить», используя таймеры вместо CADisplayLink или таймер в одном представлении и DisplayLink в другом, хотя я хотел бы знать, что вызывает это. Я создаю ссылку для отображения, как это (в обоих видах):
self.displayLink = [NSClassFromString(@"CADisplayLink") displayLinkWithTarget:self selector:@selector(drawView:)];</p>
<p>[displayLink setFrameInterval:animationFrameInterval];</p>
<p>[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
Теперь последний вопрос о странной вещи, которую я заметил. При запуске примера проекта OpenGL ES, предоставленного в Xcode в симуляторе iPad с видом, измененным по ширине ниже 760, он ничего не отображает на экране. Он касается только ширины, хотя высота может быть изменена любым способом. Это происходит только в симуляторе, а не на устройстве.
Таким образом, вопросы в основном, являются ли упомянутые выше вещи ошибками, функциями или я просто делаю это неправильно?
Спасибо
/ J0h