Я пытаюсь создать текстуру с плавающей запятой для хранения промежуточных результатов моего конвейера рендеринга, созданного фрагментным шейдером. Мне нужно, чтобы значения фрагментов были знаковыми числами с плавающей запятой .
Я понимаю, что существует расширение 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 это работает отлично.
Есть ли у вас предложения, что я делаю не так?
Спасибо!