Только начало DXT текстуры загружает openGL
Я недавно начал изучать openGL. При этом я начал пробовать реализовывать текстуры. Это легко сработало при загрузке текстуры jpeg с использованием внешней библиотеки декомпрессии, однако затем я попытался загрузить текстуры DXT и создал некоторый код для загрузки файла DXT и использования его в качестве текстуры. Когда я пытаюсь использовать эту текстуру, лица объекта, который я пытаюсь текстурировать, выглядят следующим образом:
Однако текстура должна выглядеть так: я создал этот файл DXT с 10 уровнями MIP-карты от начального разрешения 512 * 512 до 1 * 1, и я предполагаю, что проблема как-то связана со всеми MIP-картами в файле. загружается как одна текстура, однако я не знаю наверняка. Код, который я использую для создания текстуры:
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
unsigned int blockSize = (format == GL_COMPRESSED_RGBA_S3TC_DXT1_EXT) ? 8 : 16;
unsigned int offset = 0;
for (unsigned int level = 0; level < mipMapCount && (width || height); ++level) {
unsigned int size = ((width + 3) / 4) * ((height + 3) / 4) * blockSize;
glCompressedTexImage2D(GL_TEXTURE_2D, level, format, width, height, 0, size, buffer + offset);
offset += size;
width /= 2;
height /= 2;
}
delete[] buffer;
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, mipMapCount);
где buffer является буфером, содержащим изображение, ширина и высота являются шириной и высотой соответственно, уровень - это уровень mipmap, смещение - смещение к уровню mipmap в буфере, формат - это формат изображения, а размер - размер индивидуальная MIP-карта. Другие флаги, такие как обтекание текстурой и функции максимального и минимального увеличения фильтра, устанавливаются позже, однако я не думаю, что они имеют отношение к этой проблеме.