Сжатие открытой текстуры GL - PullRequest
3 голосов
/ 04 января 2011

Я новичок в Open GL.

Есть ли необходимость в сжатии текстур во время выполнения?

Конечно, как это работает, большой текстурный файл сжимается во время сборки. Во время выполнения вы расширяете части сжатого файла текстуры по мере необходимости для применения к поверхности.

Существуют ли (вероятные) обстоятельства, когда вы расширили данные текстуры, и вам нужно сжать их во время выполнения?

Спасибо!

1 Ответ

5 голосов
/ 04 января 2011

Вы говорите о форматах сжатых изображений (например, JPEG или даже zip-файл, содержащий изображение) или форматах сжатых текстур (например, DXT1 и т. Д.)? Когда у вас есть сжатая текстура (например, DXT), вам не нужно распаковывать ее во время выполнения, видеокарта может делать это на лету, когда она пробует текстуру.

Для игр, в которых вы можете предварительно скомпилировать все свои ресурсы заранее, обычно рекомендуется применять что-то вроде сжатия DXT во время сборки (ресурса), чтобы получить все преимущества сжатия текстур (более быстрое время загрузки, меньше памяти). использование полосы пропускания и т. д.) без затрат на фактическое выполнение сжатия во время выполнения. Тем не менее, при любых обстоятельствах, когда вы хотите визуализировать со сжатыми текстурами, но у вас нет доступа к изображениям, которые вы будете использовать заранее (возможно, вы позволите пользователю выбирать файлы изображений со своего компьютера или чего-то еще), что у вас будет нет выбора, кроме как сделать сжатие во время выполнения.

EDIT:

Способ, которым вы будете выполнять сжатие DXT во время выполнения, будет вызывать glTexImage2D, указывая фактический формат исходного изображения, которое у вас есть (GL_RGBA и т. Д.) Для параметра «format», и сжатый формат для параметра «internal format» например, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT для DXT1, при условии, что ваша карта поддерживает расширение gl_ext_texture_compression_s3tc.

Если у вас есть предварительно сжатые данные текстуры, вы можете загрузить их напрямую с помощью glCompressedTexImage2D.

...