Каков размер блока текстуры GL_COMPRESSED_RGB8_ETC2
и GL_COMPRESSED_RGBA8_ETC2_EAC
?
Я использовал ((w+3)/4)*((h+3)/4)* 8
для GL_ETC1_RGB8_OES
, но ничего не могу найти о ETC2 (в документации Khronos об этом не очень ясно).
Каков размер блока текстуры GL_COMPRESSED_RGB8_ETC2
и GL_COMPRESSED_RGBA8_ETC2_EAC
?
Я использовал ((w+3)/4)*((h+3)/4)* 8
для GL_ETC1_RGB8_OES
, но ничего не могу найти о ETC2 (в документации Khronos об этом не очень ясно).
// ETC1
{ 4, 4, 8, COMPRESSED_ETC1_RGB8_OES },
// ETC2 / EAC
{ 4, 4, 8, COMPRESSED_R11_EAC },
{ 4, 4, 8, COMPRESSED_SIGNED_R11_EAC },
{ 4, 4, 16, COMPRESSED_RG11_EAC },
{ 4, 4, 16, COMPRESSED_SIGNED_RG11_EAC },
{ 4, 4, 8, COMPRESSED_RGB_ETC2 },
{ 4, 4, 8, COMPRESSED_SRGB8_ETC2 },
{ 4, 4, 8, COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 },
{ 4, 4, 8, COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 },
{ 4, 4, 16, COMPRESSED_RGBA8_ETC2_EAC },
{ 4, 4, 16, COMPRESSED_SRGB8_ALPHA8_ETC2_EAC },
Первые два значения — размер блока (например, 4x4), третье значение — BytesPerBlock. Четвертое значение — режим сжатия. Это из таблицы, которую я использую для обработки всех существующих сжатых форматов.
Я удалил значения, которые бесполезны для этого ответа (указатели функций сжатия и распаковки и предпочтительные форматы пикселей для исходных/целевых данных, sRGB и т. д.).
Спецификация OpenGL ES 3.0 включает оператор: A texture compressed using any of the ETC texture image formats is described as a number of 4 x 4 pixel blocks
в разделе C.1 ETC Compressed Texture Image Formats
.
FWIW ETC2 расширяет ETC1, используя некоторые, иначе неиспользуемые, битовые шаблоны, как описано Стромом и др. в "Сжатие текстур с использованием недопустимых комбинаций". (См. также слайд-презентацию по графическому оборудованию):
Таким образом, размеры блоков одинаковы.
Размеры блоков задокументированы здесь: http://www.khronos.org/opengles/sdk/docs/man3/html/glCompressedTexImage2D.xhtml
Особенно: