Я могу успешно генерировать 3D текстуры без сжатия. Итак, какие изменения здесь необходимы?
GLint i;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &i);
this->width = glm::min(width , i);
this->height = glm::min(height, i);
this->depth = glm::min(depth , i);
GLubyte clearColor = 255;
glGenTextures(1, &texture_ID);
glBindTexture(GL_TEXTURE_3D, texture_ID);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
glTexImage3D(GL_TEXTURE_3D, 0, GL_R8, width, height, depth, 0, GL_RED, GL_UNSIGNED_BYTE, NULL);
glCompressedTexImage3D(GL_TEXTURE_3D, 0, GL_R8, width, height, depth, 0, width * height * depth *
2, NULL);
glClearTexImage(texture_ID, 0, GL_RED, GL_UNSIGNED_BYTE, &clearColor);
glBindTexture(GL_TEXTURE_3D, 0);
Меня не беспокоит фрагментный шейдер, а использование vram в диспетчере задач. Когда я использую только glCompressedTexImage3D
, текстура не создается, но если я использую приведенный выше код, размер кажется точно таким же, как и без сжатия. (около 4 гигабайт).