Если DDS содержит сжатую текстуру, тогда используйте glCompressedTexImage2DARB (), если он содержит несжатые данные, применяется обычная процедура glTexImage2D. Один раз для каждого уровня мип-карты, если файл DDS содержит мип-карты, и один раз для каждого грани кубической карты, если это кубическая карта.
Чтобы узнать, как прочитать заголовок и данные в файле DDS, посмотрите документацию для него на MSDN или в DirectX SDK. Это довольно стандартный формат контейнера, сюрпризов не так уж много.
Имейте в виду, что DDS использует левый верхний источник изображения, тогда как OpenGL предполагает левый нижний источник данных изображения. Это означает, что вы, вероятно, захотите перевернуть изображение DDS по вертикали после загрузки. Вы можете сделать это, не распаковывая их, если они находятся в DXT1 / 3/5, но это немного сложный процесс, который включает битовую манипуляцию с содержимым каждого 4x4 блок сжатия.