void texture_unload(int id) { if (id < 0 || id >= POOL.count) return; struct texture *tex = &POOL.tex[id]; if (tex->id == 0) return; render_release(R, TEXTURE, tex->id); if (tex->fb != 0) render_release(R, TARGET, tex->fb); tex->id = 0; tex->fb = 0; }
void renderbuffer_unload(struct render_buffer *rb) { if (rb->vbid) { render_release(R, VERTEXBUFFER, rb->vbid); rb->vbid = 0; } }
static int shutdown(void) { ctrl_release(); render_release(); physics_release(); perf_release(); return 0; }
void texture_delete_framebuffer(int id) { if (id < 0 || id >= POOL.count) { return; } struct texture *tex = &POOL.tex[id]; if (tex->fb != 0) { render_release(R, TARGET, tex->fb); tex->fb = 0; } }
void shader_load(int prog, const char *fs, const char *vs, int texture, const char ** texture_uniform_name) { struct render_state *rs = RS; assert(prog >=0 && prog < MAX_PROGRAM); struct program * p = &rs->program[prog]; if (p->prog) { render_release(RS->R, SHADER, p->prog); p->prog = 0; } program_init(p, fs, vs, texture, texture_uniform_name); p->texture_number = texture; RS->current_program = -1; }
RID render_target_create(struct render *R, int width, int height, enum TEXTURE_FORMAT format) { RID tex = render_texture_create(R, width, height, format, TEXTURE_2D, 0); if (tex == 0) return 0; render_texture_update(R, tex, width, height, NULL, 0, 0); RID rt = create_rt(R, tex); glBindFramebuffer(GL_FRAMEBUFFER, R->default_framebuffer); R->last.target = 0; R->changeflag |= CHANGE_TARGET; if (rt == 0) { render_release(R, TEXTURE, tex); } CHECK_GL_ERROR return rt; }
static void _texture_release(int id) { render_release(sl_shader_get_render(), TEXTURE, id); }
void label_unload() { render_release(R, TEXTURE, Tex); dfont_release(Dfont); Dfont = NULL; }