Я запускаю табличку с котлом OpenGL пример кода, который XCode создает для проекта OpenGL для iOS. Это создает простой ViewController и использует GLKit для обработки остальной части работы.iOS GLKit и back to default framebuffer
Все функциональные возможности обновления/рисования приложения находятся на C++. Это кросс-платформа.
Существует много создания фреймбуфера. Фаза рисования отображает несколько буферов кадров, а затем пытается вернуть их к фреймбуферу по умолчанию.
glBindFramebuffer(GL_FRAMEBUFFER, 0);
Это генерирует GL_INVALID_ENUM. Только на iOS.
Я полностью в тупике, почему. Код отлично работает на всех основных платформах, кроме iOS. Я хочу обвинить GLKit. Любые примеры установки iOS OpenGL, которые не используют GLKit?
UPDATE
Следующий фрагмент кода позволяет мне видеть видеобуфер по умолчанию, GLKit использует. По какой-то причине это выходит как «2». Конечно, если я использую «2» во всех своих вызовах glBindFrameBuffer, это работает. Это очень расстраивает.
[view bindDrawable ];
GLint defaultFBO;
glGetIntegerv(GL_FRAMEBUFFER_BINDING_OES, &defaultFBO);
LOGI("DEFAULT FBO: %d", defaultFBO);
Какая причина на земле заставит GLKit не генерировать свой внутренний фреймбуфер в 0? Это семантика всех других реализаций использования OpenGL, 0 - FBO по умолчанию.
Хорошо, я куплю, что в качестве ответа я ищу. Так что GLKit или нет, я должен был бы сделать FBO и передать этот идентификатор FBO в кодовую базу кросс-платформы, чтобы он знал, что такое «По умолчанию». Я нахожу это странным, так как все другие платформы, в том числе мобильные, управляют FBO для вас и поддерживают семантику, которая по умолчанию равна 0. Спасибо! – Halsafar