Загрузка текстуры 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 компрессионный блок.