void texture_set_properties(texture_t texture, struct texture_properties* properties) { glBindTexture(GL_TEXTURE_2D, texture->id); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, texture_wrap_opengl(properties->wrap_s)); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, texture_wrap_opengl(properties->wrap_t)); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, texture_filter_opengl(properties->filter_min)); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, texture_filter_opengl(properties->filter_max)); GLenum err = glGetError(); if (err != GL_NO_ERROR) texture_error("glTexParameteri failed: %s\n", err); }
texture_t texture_create_rgba(int width, int height) { struct texture* texture = malloc(sizeof(struct texture)); glGenTextures(1, &texture->id); glBindTexture(GL_TEXTURE_2D, texture->id); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); GLenum err = glGetError(); if (err != GL_NO_ERROR) texture_error("glTexImage2D failed: %s\n", err); texture_properties_set_default(texture); return texture; }
void init_texture(t_env *e) { int i; printf("llaa init texture\n"); e->tex = malloc(sizeof(t_image) * 63); e->file = malloc(sizeof(char *) * 63); init_texture_parser1(e); init_texture_parser2(e); init_texture_parser3(e); i = 0; while (++i < 63) { e->tex[i].i = mlx_xpm_file_to_image(e->mlx, e->file[i], &e->tex[i].width, &e->tex[i].height); if (e->tex[i].i == NULL) texture_error(); e->tex[i].data = mlx_get_data_addr(e->tex[i].i, &e->tex[i].bpp, &e->tex[i].szline, &e->tex[i].endian); } }
void framebuffer_attach_texture(framebuffer_t framebuffer, texture_t texture, enum framebuffer_target target) { GLint gl_target; switch (target) { case FRAMEBUFFER_TARGET_COLOR: gl_target = GL_COLOR_ATTACHMENT0; break; case FRAMEBUFFER_TARGET_DEPTH: gl_target = GL_DEPTH_ATTACHMENT; break; case FRAMEBUFFER_TARGET_STENCIL: gl_target = GL_STENCIL_ATTACHMENT; break; } glFramebufferTexture2D(GL_FRAMEBUFFER, gl_target, GL_TEXTURE_2D, texture->id, 0); GLenum err = glGetError(); if (err != GL_NO_ERROR) texture_error("glFramebufferTexture2D failed: %s\n", err); }