#include #include #include #include uint32_t load_texture(const char* path) { stbi_set_flip_vertically_on_load(1); uint32_t id; glCreateTextures(GL_TEXTURE_2D, 1, &id); glTextureParameteri(id, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTextureParameteri(id, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTextureParameteri(id, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTextureParameteri(id, GL_TEXTURE_MAG_FILTER, GL_LINEAR); int width, height, channels; unsigned char* pixels = stbi_load(path, &width, &height, &channels, 0); if(pixels) { glTextureStorage2D(id, 1, GL_RGBA8, width, height); glTextureSubImage2D(id, 0, 0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels); printf("[Texture %d, %s] Loaded successfully (%dx%d, %d channels)\n", id, path, width, height, channels); } else { printf("[Texture %d, %s] Failed to load image data: %s\n", id, path, stbi_failure_reason()); exit(-1); } return id; }