Как исправить: «Изображение (загруженное stb_image) занимает слишком много памяти» - PullRequest
0 голосов
/ 01 апреля 2019

Я сейчас изучаю cg, и мне нужно загрузить несколько текстур.Я попытался использовать stb_images, и он работает нормально, но когда я загружаю изображение в память, оно занимает слишком много места.

Я использую небольшой JPG (512 * 512, 154kb), но если я его загружаю 10раз он будет занимать около 12 МБ памяти.(Я использую диагностический инструмент Visual Studio для проверки памяти процесса)

Как я могу устранить этот бесполезный объем использования памяти.

struct Image {
    int width, height, bpp;
    unsigned char* rgba;

    Image(const std::string& filePath) {
        rgba = stbi_load(filePath.c_str(), &width, &height, &bpp, 4);
    }

    ~Image() {
        stbi_image_free(rgba);
    }
};

std::vector<Image> images;
images.reserve(10);
for (int i = 0; i < 10; ++i)
    images.emplace_back("res/textures/image.jpg");


...