diff options
Diffstat (limited to '')
-rw-r--r-- | height-map-display/src/sprites/loader.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/height-map-display/src/sprites/loader.c b/height-map-display/src/sprites/loader.c new file mode 100644 index 0000000..393af10 --- /dev/null +++ b/height-map-display/src/sprites/loader.c @@ -0,0 +1,37 @@ +#include "loader.h" + +#define STB_IMAGE_IMPLEMENTATION +#include "stb_image.h" +#include <stdio.h> + +GLuint load_texture(const char* path) { + + GLuint texture_id; + glGenTextures(1, &texture_id); + + glBindTexture(GL_TEXTURE_2D, texture_id); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_REPEAT); + + + // Load image data + int width, height, nr_channels; + unsigned char* data = stbi_load(path, &width, &height, &nr_channels, 0); + if (data) { + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data); + glGenerateMipmap(GL_TEXTURE_2D); + } else { + printf("Failed to load texture: %s\n", path); + } + stbi_image_free(data); + + // Unbind texture + glBindTexture(GL_TEXTURE_2D, 0); + + return texture_id; + +} |