Полная точность текстур с плавающей точкой на iPad 2
Может кто-нибудь сказать мне, если на iPad2 можно использовать 2D-текстуры с плавающей точкой полной точности? (полная точность = одинарная точность)
Распечатав реализованные расширения OpenGL на iPad2, используя
glGetString(GL_EXTENSIONS)
Я понял, что поддерживаются OES_texture_half_float и OES_texture_float.
Тем не менее, использование GL_HALF_FLOAT_OES в качестве типа текстур работает нормально,
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_HALF_FLOAT_OES, NULL);
тогда как использование GL_FLOAT приводит к неполному объекту кадрового буфера.
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_FLOAT, NULL);
Я что-то здесь не так делаю или текстуры с плавающей точкой полной точности просто не поддерживаются?
Спасибо заранее.
1 ответ
OES_texture_float
Расширение предусматривает использование 32-битных текстур с плавающей точкой в качестве входных данных, но это не означает, что вы можете рендерить в них. EXT_color_buffer_half_float
добавляет возможность для устройств iOS (я полагаю, графические процессоры A5 и выше) рендерить в 16-битные текстуры с половинным плаванием, но не в 32-битные текстуры с полным плаванием.
Я не верю, что какое-либо из существующих устройств iOS позволяет выполнять рендеринг в полные 32-битные плавающие текстуры, просто используя их в качестве входных данных при рендеринге сцены.