0

我目前正在学习cg,我必须加载一些纹理。我尝试使用 stb_images 并且效果很好,但是当我在内存中加载图像时,它占用了太多空间。

我使用的是一个小的 jpg(512*512, 154kb),但是如果我加载它 10 次,它将占用大约 12 MB 的内存。(我使用 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");


4

0 回答 0