From 9aa09c55b0af4b8c4c14a4ac50fcb21f7eba492d Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Mon, 10 Apr 2023 18:36:53 +0100 Subject: Support loading textures from an in memory buffer --- gfx/image.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'gfx/image.cpp') diff --git a/gfx/image.cpp b/gfx/image.cpp index e3e3b01..fb86cb6 100644 --- a/gfx/image.cpp +++ b/gfx/image.cpp @@ -19,6 +19,22 @@ Image::Image(const char * fileName, int flags) : width {}, height {}, numCompone data = {bytes, static_cast(width * height * numComponents)}; } +Image::Image(std::span buffer, int flags) +{ + stbi_set_flip_vertically_on_load(1); + int w, h, nc; + unsigned char * bytes = stbi_load_from_memory(buffer.data(), static_cast(buffer.size()), &w, &h, &nc, flags); + width = static_cast(w); + height = static_cast(h); + numComponents = static_cast(nc); + + if (!bytes) { + throw std::runtime_error {"Unable to load image from memory buffer "}; + } + + data = {bytes, static_cast(width * height * numComponents)}; +} + Image::~Image() { stbi_image_free(data.data()); -- cgit v1.2.3