diff --git a/includes/utils.h b/includes/utils.h index 4cdac30..d087dba 100644 --- a/includes/utils.h +++ b/includes/utils.h @@ -2,6 +2,7 @@ #define DEMO_UTILS_H 1 #include +#include #include // Récupère un delta-temps @@ -25,7 +26,10 @@ void bindAndLoadf(const char *name); * `-z` => move away */ void move(GLfloat x, GLfloat y, GLfloat z); -/* Rotate a vector XYZ */ +// Rotate a vector XYZ void rotate_vec(GLfloat *, GLfloat); +// Load an image into a GL texture +void load_img(const char *filename, GLuint texture); + #endif diff --git a/src/utils.c b/src/utils.c index cf035fc..3be289b 100644 --- a/src/utils.c +++ b/src/utils.c @@ -26,3 +26,23 @@ void rotate_vec(GLfloat *vec, GLfloat angle) { vec[1] = y * cosTheta - z * sinTheta; vec[2] = y * sinTheta + z * cosTheta; } + +void load_img(const char *filename, GLuint texture) { + glBindTexture(GL_TEXTURE_2D, texture); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + + SDL_Surface *s = NULL; + if (!(s = IMG_Load(filename))) { + fprintf(stderr, "Erreur de chargement de l'image (IMG_Load)\n"); + } + + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, s->w, s->h, 0, GL_RGBA, + GL_UNSIGNED_BYTE, s->pixels); + SDL_FreeSurface(s); + + glBindTexture(GL_TEXTURE_2D, 0); +}