4

GL_COMPRESSED_RGB8_ETC2a和GL_COMPRESSED_RGBA8_ETC2_EAC纹理的块大小是多少?

我正在使用 ((w+3)/4)*((h+3)/4)* 8for GL_ETC1_RGB8_OES,但找不到有关 ETC2 的任何信息(Khronos 文档对此不太清楚)。

4

4 回答 4

3
    // 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 等)。

于 2014-09-15T06:52:16.253 回答
1

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在 Section C.1 ETC Compressed Texture Image Formats.

于 2013-07-28T18:35:22.833 回答
1

块大小记录在这里:http ://www.khronos.org/opengles/sdk/docs/man3/html/glCompressedTexImage2D.xhtml

尤其是:

  • GL_COMPRESSED_RGB8_ETC2 = ceil(宽度/4)* ceil(高度/4)* 8
  • GL_COMPRESSED_RGBA8_ETC2_EAC = ceil(宽度/4)* ceil(高度/4)* 16
于 2014-05-03T03:37:48.967 回答
1

FWIW ETC2 通过使用一些未使用的位模式来扩展 ETC1,如 Strom 等人在“使用无效组合的纹理压缩”中所述。(另请参阅图形硬件幻灯片演示):

因此块大小是相同的。

于 2013-08-30T14:58:56.527 回答