Как использовать текстуры с типом GL_HALF_FLOAT_OES в iOS?

Я пытаюсь создать текстуру с плавающей запятой для хранения промежуточных результатов моего конвейера рендеринга, созданного фрагментным шейдером. Мне нужно, чтобы значения фрагментов были знаковыми числами с плавающей запятой .

Я понимаю, что существует расширение OES_texture_float , которое должно поддерживаться всеми новыми устройствами iOS (т.е. начиная с iPhone 3GS / iPod Touch 3 / iPad в соответствии с руководством Apple ) .

Однако, когда я создаю такую ​​текстуру, используя

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_HALF_FLOAT_OES, NULL);

, запускаю свое приложение и проверяю ее в инструментах, оно сообщает мне:

glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_HALF_FLOAT_OES, NULL ): (недопустимое перечисление = 0x8d61): Недопустимое перечисление для аргумента 'type'

Любопытно то, что он, тем не менее, работает на моем iPhone 4S, но не на iPhone 4 (который также должен поддерживаться). Однако сообщение об ошибке появляется для обоих устройств. Но на iPhone 4 OpenGL не может создать действительный объект фреймбуфера, используя эту текстуру в качестве цели рендеринга. На 4S это работает отлично.

Есть ли у вас предложения, что я делаю не так?

Спасибо!

10
задан mskfisher 11 May 2012 в 13:35
поделиться