10GLuint
make_texture(
const int unit,
const int width,
const int height,
const GLenum texel_type,
const GLenum data_format,
const GLenum data_type )
14 glGenTextures(1, &texture);
15 glActiveTexture(GL_TEXTURE0 + unit);
16 glBindTexture(GL_TEXTURE_2D, texture);
19 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
20 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
21 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
22 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
25 glTexImage2D(GL_TEXTURE_2D, 0,
26 texel_type, width, height, 0,
27 data_format, data_type,
nullptr);
30 glGenerateMipmap(GL_TEXTURE_2D);
34GLuint
make_flat_texture(
const int unit,
const int width,
const int height,
const GLenum texel_type,
const GLenum data_format,
const GLenum data_type )
38 glGenTextures(1, &texture);
39 glActiveTexture(GL_TEXTURE0 + unit);
40 glBindTexture(GL_TEXTURE_2D, texture);
43 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
44 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
45 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
46 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
49 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
52 glTexImage2D(GL_TEXTURE_2D, 0,
53 texel_type, width, height, 0,
54 data_format, data_type,
nullptr);
57 glGenerateMipmap(GL_TEXTURE_2D);
68 glGenTextures(1, &texture);
69 glActiveTexture(GL_TEXTURE0 + unit);
70 glBindTexture(GL_TEXTURE_2D, texture);
73 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
74 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
75 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
76 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
79 glTexImage2D(GL_TEXTURE_2D, 0,
81 GL_RGBA, GL_FLOAT, im.
data());
84 glGenerateMipmap(GL_TEXTURE_2D);
95 glGenTextures(1, &texture);
96 glActiveTexture(GL_TEXTURE0 + unit);
97 glBindTexture(GL_TEXTURE_2D, texture);
100 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
101 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
102 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
103 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
108 case 1: format= GL_RED;
break;
109 case 2: format= GL_RG;
break;
110 case 3: format= GL_RGB;
break;
111 case 4: format= GL_RGBA;
break;
112 default: format= GL_RGBA;
118 case 1: type= GL_UNSIGNED_BYTE;
break;
119 case 4: type= GL_FLOAT;
break;
120 default: type= GL_UNSIGNED_BYTE;
124 glTexImage2D(GL_TEXTURE_2D, 0,
125 texel_type, im.width, im.height, 0,
126 format, type, im.data());
129 glGenerateMipmap(GL_TEXTURE_2D);
133GLuint
read_texture(
const int unit,
const char *filename,
const GLenum texel_type )
146GLuint
make_depth_texture(
const int unit,
const int width,
const int height,
const GLenum texel_type )
148 return make_flat_texture(unit, width, height, texel_type, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT);
151GLuint
make_uint_texture(
const int unit,
const int width,
const int height,
const GLenum texel_type )
153 return make_flat_texture(unit, width, height, texel_type, GL_RED_INTEGER, GL_UNSIGNED_INT);
156GLuint
make_float_texture(
const int unit,
const int width,
const int height,
const GLenum texel_type )
161GLuint
make_vec2_texture(
const int unit,
const int width,
const int height,
const GLenum texel_type )
166GLuint
make_vec3_texture(
const int unit,
const int width,
const int height,
const GLenum texel_type )
171GLuint
make_vec4_texture(
const int unit,
const int width,
const int height,
const GLenum texel_type )
183 glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
184 glReadBuffer(GL_BACK);
188 glGetIntegerv(GL_VIEWPORT, viewport);
191 ImageData image(viewport[2], viewport[3], 4);
192 glReadPixels(0, 0, image.width, image.height,
193 GL_RGBA, GL_UNSIGNED_BYTE, image.data());
201 sprintf(tmp,
"%s%02d.png", prefix,
id);
210 sprintf(tmp,
"%s%04d.bmp", prefix,
id);
213 printf(
"capture frame '%s'...\n", tmp);
representation d'une image.
unsigned width() const
renvoie la largeur de l'image.
unsigned size() const
renvoie le nombre de pixels de l'image.
unsigned height() const
renvoie la hauteur de l'image.
const float * data() const
renvoie un const pointeur sur le stockage des couleurs des pixels.
void printf(Text &text, const int px, const int py, const char *format,...)
affiche un texte a la position x, y. meme utilisation que printf().
int write_image_data(ImageData &image, const char *filename, const bool flipY)
enregistre des donnees dans un fichier png.
ImageData read_image_data(const void *buffer, const unsigned size, const bool flipY)
charge les donnees d'un fichier png stocke en memoire. renvoie une image initialisee par defaut en ca...
GLuint make_vec2_texture(const int unit, const int width, const int height, const GLenum texel_type)
creation de textures pour stocker des donnees (autres qu'une couleur).
int capture(const char *prefix)
GLuint make_texture(const int unit, const int width, const int height, const GLenum texel_type, const GLenum data_format, const GLenum data_type)
creation de textures filtrables / mipmaps
int screenshot(const char *filename)
enregistre le contenu de la fenetre dans un fichier. doit etre de type .png / .bmp
GLuint make_vec3_texture(const int unit, const int width, const int height, const GLenum texel_type)
creation de textures pour stocker des donnees (autres qu'une couleur).
GLuint make_float_texture(const int unit, const int width, const int height, const GLenum texel_type)
creation de textures pour stocker des donnees (autres qu'une couleur).
GLuint read_srgb_texture(const int unit, const char *filename, const GLenum texel_type)
GLuint make_vec4_texture(const int unit, const int width, const int height, const GLenum texel_type)
creation de textures pour stocker des donnees (autres qu'une couleur).
GLuint read_texture(const int unit, const char *filename, const GLenum texel_type)
GLuint make_flat_texture(const int unit, const int width, const int height, const GLenum texel_type, const GLenum data_format, const GLenum data_type)
creation de textures non filtrables / 1 mipmap
GLuint make_uint_texture(const int unit, const int width, const int height, const GLenum texel_type)
creation de textures pour stocker des donnees (autres qu'une couleur).
GLuint make_depth_texture(const int unit, const int width, const int height, const GLenum texel_type)
creation de textures pour stocker des donnees (autres qu'une couleur).
stockage temporaire des donnees d'une image.