diff options
author | dec05eba <dec05eba@protonmail.com> | 2025-04-14 23:16:43 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2025-04-14 23:16:43 +0200 |
commit | 0c90a62d08ef8846b2516342f7a3ded10415f3bf (patch) | |
tree | 8883804c783d5c9222be1cd2240aaa5c453995de | |
parent | 7d6e67668ba317d823f58f9bd8edbea2da9f4b68 (diff) |
Add scaling option for texture, allow nearest neighbour scaling
m--------- | depends/mgl | 0 | ||||
-rw-r--r-- | include/mglpp/graphics/Texture.hpp | 11 | ||||
-rw-r--r-- | src/graphics/Texture.cpp | 9 |
3 files changed, 11 insertions, 9 deletions
diff --git a/depends/mgl b/depends/mgl -Subproject 46962ea3fc83a26fcf0851ccb748b08eecf7f8e +Subproject 0243be4eebe488b449742474d4301a39f00ac67 diff --git a/include/mglpp/graphics/Texture.hpp b/include/mglpp/graphics/Texture.hpp index 1ea040e..6ab1fb4 100644 --- a/include/mglpp/graphics/Texture.hpp +++ b/include/mglpp/graphics/Texture.hpp @@ -14,24 +14,25 @@ namespace mgl { struct LoadOptions { bool compressed = false; bool pixel_coordinates = false; - bool mipmap = false; /* available since opengl 3.0 */ + mgl_texture_scale_type scale_type = MGL_TEXTURE_SCALE_LINEAR; }; struct ReferenceOptions { bool pixel_coordinates = false; + mgl_texture_scale_type scale_type = MGL_TEXTURE_SCALE_LINEAR; }; Texture(); - Texture(unsigned int gl_texture_id, mgl_texture_format format, const ReferenceOptions reference_options = {false}); + Texture(unsigned int gl_texture_id, mgl_texture_format format, const ReferenceOptions reference_options = {false, MGL_TEXTURE_SCALE_LINEAR}); Texture(Texture &&other); Texture& operator=(Texture &&other); ~Texture(); static Texture reference(mgl_texture ref); - bool load_from_file(const char *filepath, const LoadOptions load_options = {false, false, false}); - bool load_from_image(Image &image, const LoadOptions load_options = {false, false, false}); - bool load_from_memory(const unsigned char *data, int width, int height, mgl_image_format format, LoadOptions load_options = {false, false, false}); + bool load_from_file(const char *filepath, const LoadOptions load_options = {false, false, MGL_TEXTURE_SCALE_LINEAR}); + bool load_from_image(Image &image, const LoadOptions load_options = {false, false, MGL_TEXTURE_SCALE_LINEAR}); + bool load_from_memory(const unsigned char *data, int width, int height, mgl_image_format format, LoadOptions load_options = {false, false, MGL_TEXTURE_SCALE_LINEAR}); void clear(); vec2i get_size() const; bool is_valid() const; diff --git a/src/graphics/Texture.cpp b/src/graphics/Texture.cpp index 3b1f410..e22bcfb 100644 --- a/src/graphics/Texture.cpp +++ b/src/graphics/Texture.cpp @@ -10,7 +10,8 @@ namespace mgl { Texture::Texture(unsigned int gl_texture_id, mgl_texture_format format, const ReferenceOptions reference_options) { memset(&texture, 0, sizeof(mgl_texture)); const mgl_texture_reference_options texture_reference_options = { - reference_options.pixel_coordinates + reference_options.pixel_coordinates, + reference_options.scale_type }; mgl_texture_init_reference_existing_gl_texture(&texture, gl_texture_id, format, &texture_reference_options); } @@ -58,7 +59,7 @@ namespace mgl { const mgl_texture_load_options texture_load_options = { load_options.compressed, load_options.pixel_coordinates, - load_options.mipmap + load_options.scale_type }; if(mgl_texture_load_from_file(&texture, filepath, &texture_load_options) == 0) { @@ -79,7 +80,7 @@ namespace mgl { const mgl_texture_load_options texture_load_options = { load_options.compressed, load_options.pixel_coordinates, - load_options.mipmap + load_options.scale_type }; if(mgl_texture_load_from_image(&texture, image.internal_image(), &texture_load_options) == 0) { @@ -100,7 +101,7 @@ namespace mgl { const mgl_texture_load_options texture_load_options = { load_options.compressed, load_options.pixel_coordinates, - load_options.mipmap + load_options.scale_type }; if(mgl_texture_load_from_memory(&texture, data, width, height, format, &texture_load_options) == 0) { |