Создание внеэкранных поверхностей OpenGL ES на iPhone: не удается прикрепить - PullRequest
1 голос
/ 24 января 2010

Я использую контекст EAGL и представление для обычной визуализации экрана моего приложения. Это включает (как и ожидалось) создание и привязку рендербуфера и кадрового буфера к представлению CAEAGLLayer. Это работает как ожидалось.

Однако иногда я хочу использовать OpenGL для полной визуализации некоторой геометрии за пределами экрана (с целью получения результирующих необработанных пикселей.)

Я установил внеэкранную поверхность так, как мне подсказывают Apple Docs . Я не буду публиковать код, который я использую (если кто-то не спросит меня), поскольку это дословно то, что указано на этой странице в разделе «Объекты закадрового буфера».

Но на последнем шаге glCheckFramebufferStatusOES всегда возвращает ошибку GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES вместо ожидаемого успеха. Первоначально я думал, что это происходит, потому что уже был связан кадровый буфер (CAEAGLLayer one), но проблема сохраняется, даже если я уничтожу этот кадровый буфер перед созданием закадрового.

Может кто-нибудь указать мне правильное направление, как заставить эту работу? Возможно, я неправильно понимаю нечто фундаментальное в конвейере GL (не в первый раз).

Спасибо!

1 Ответ

1 голос
/ 24 января 2010

(Большое спасибо GavinB за полезный комментарий по этому вопросу.)

Звонок на glRenderbufferStorageOES не удался. glGetError() возвращено GL_INVALID_VALUE. Все константы были законными, поэтому я сократил параметры ширины и высоты до очень маленьких, и здесь все получилось. Похоже, есть верхняя граница для размера поверхности, которую я могу создать - я не уверен, означает ли ошибка «у вас закончилась память во время выделения» или «есть жесткое ограничение на размеры независимо от свободной памяти» ( кто-нибудь может меня просветить?).

Существует ли такая вещь, как ссылка на API OpenGL (например, от Apple) с информацией, относящейся к iPhone? Многие виды поведения / ограничения зависят от конкретной реализации, и было бы здорово иметь возможность заранее изучить этот материал, а не получать общие сведения при использовании Google ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...