Я пытаюсь получить glCompressedTexSubimage2d с текстурами ETC1 для работы в контексте OpenGL ES 3.2.glCompressedTexSubimage2d с данными текстуры ETC1
Я знаю, что glCompressedTexSubimage2d указан для работы с ETC2 (https://www.khronos.org/opengles/sdk/docs/man32/html/glCompressedTexSubImage2D.xhtml), но не ETC1. Однако ETC2 определяется как обратная совместимость с ETC1 (http://www.jacobstrom.com/publications/StromPetterssonGH07.pdf), поэтому любая текстура ETC1 также должна быть действительной текстурой ETC2 (исправьте меня, если я ошибаюсь) - поэтому вместо GL_ETC1_RGB8_OES я использую GL_COMPRESSED_RGB8_ETC2 как внутренний формат для обоих цель, а также загруженный подтекст. Как целевая, так и загруженная субтекстура являются кратными 4 в каждом измерении, а смещения также выровнены по краям 4.
Тем не менее, я получаю ошибку Invalid_Operation при вызове, например, со следующими аргументами :
*** GL error after call to CompressedTexSubImage2D(target = GL_TEXTURE_2D, level = 0, xoffset = 0, yoffset = 2048, width = 512, height = 1024, format = GL_COMPRESSED_RGB8_ETC2, imageSize = 262144, data = 0xc13ab008): invalid operation
В этом случае размер сжатой мишени текстуры 1024x4096
Тот же самый код (OpenGL эквивалент) работает с DXT1 работает на окнах.
Я исправлю, что это должно работать должным образом, или есть ограничения, которые я пропускаю?
Вы знаете причину этого ограничения? такое же ограничение указано в EXT_texture_compression_s3tc, но с dxt1 на рабочем столе все равно работает. – user1282931
Не подсказка, извините. – solidpixel
Кажется очень странным, вы можете загружать только нижнюю правую часть текстуры –