Я пытаюсь создать текстуру float для хранения промежуточных результатов моего конвейера рендеринга, созданного шейдером фрагментов. Мне нужны значения фрагментов, которые должны быть подписаны.
Я понимаю, что существует расширение OES_texture_float, которое должно поддерживаться всеми новыми устройствами iOS (т.е. начиная с iPhone 3GS/iPod Touch 3/iPad в соответствии с Apple guide).
Однако, когда я создаю такую текстуру, используя
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_HALF_FLOAT_OES, NULL);
запустите мое приложение и осмотрите его в "Инструменты", он говорит мне:
glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, ширина, высота, 0, GL_RGB, GL_HALF_FLOAT_OES, NULL): (invalid enum = 0x8d61): Недопустимое перечисление для аргумента 'type'
Любопытно, что он все же работает на моем iPhone 4S, но не на iPhone 4 (который также должен поддерживаться). Однако сообщение об ошибке появляется для обоих устройств. Но на iPhone 4 OpenGL не может создать действительный объект framebuffer, используя эту текстуру как цель рендеринга. На 4S работает отлично.
Есть ли у вас предложения, что я делаю неправильно?
Спасибо!