Загрузка текстуры DDS

Как загрузить файл текстуры dds в текстуру карты OpenGL 2dtexture или cube?

3 ответа

Решение

Я полагаю, что вы используете метод glCompressedTexImage2DARB и его друзей.

Этот PDF-файл содержит многообещающую информацию, которая может быть вам полезна.

В зависимости от ваших потребностей, библиотека DevIL может позаботиться о том, чтобы снабдить OpenGL содержимым файла DDS.

Если DDS содержит сжатую текстуру, тогда используйте glCompressedTexImage2DARB(), если он содержит несжатые данные, применяется обычная процедура glTexImage2D. Один раз для каждого уровня мип-карты, если файл DDS содержит мип-карты, и один раз для каждого грани кубической карты, если это кубическая карта.

Чтобы узнать, как прочитать заголовок и данные в файле DDS, найдите документацию по нему в MSDN или в DirectX SDK. Это довольно стандартный формат контейнера, сюрпризов не так уж много.

Имейте в виду, что DDS использует левый верхний источник изображения, тогда как OpenGL предполагает нижний левый источник данных изображения. Это означает, что вы, вероятно, захотите перевернуть DDS-изображение по вертикали после загрузки. Вы можете сделать это, не распаковывая их, если они находятся в DXT1/3/5, но это немного сложный процесс, который включает в себя битовые манипуляции с содержимым каждого 4x4 компрессионный блок.

Другие вопросы по тегам