Ответ 1
Да, ваши предположения верны.
Список форматов рендеринга в официальной спецификации - это то, что требуется для поддержки OpenGL ES 2.0. Большинство поддерживают гораздо больше, чем указано там.
Однако реализация OpenGL/OpenGL ES не поддерживает альфа-или яркостные текстуры как цветные. Вы можете реплицировать поведение с помощью расширений swizzle для текстур и/или запуска GLSL-swizzling. Расширение: EXT_texture_rg
добавляет красные и красные/зеленые форматы изображений, которые можно использовать текстурами и рендерингбуферами. Эти два формата очень полезны, если вы хотите сделать односторонний или двухканальный формат изображения с помощью FBO (поскольку GL_LUMINANCE
, GL_ALPHA
и GL_LUMINANCE_ALPHA
не являются цветными форматами).
Вообще говоря, набор форматов изображений renderbuffer является подмножеством форматов графических изображений. Вы можете использовать сжатые форматы изображений (необязательно в ES 2.0), яркости и форматы альфа-изображений для операций текстурирования и переноса пикселей, но они не поддерживаются рендерингбуферами. Это означает, что, хотя вы можете рисовать с использованием этих текстур, вы не можете рисовать их, присоединяя их к FBO. Чтобы рисовать в текстуре, он должен иметь формат изображения и формат рендеринга и формат текстуры.
В исторической заметке существуют форматы renderbuffer, которые/не могут использоваться в качестве текстур. В качестве примера можно привести многопроцессорные форматы, после создания исходной спецификации FBO была добавлена многопроцессорная текстура.