static void gl_glsl_destroy_resources(glsl_shader_data_t *glsl) { unsigned i; if (!glsl) return; current_idx = 0; glUseProgram(0); for (i = 0; i < GFX_MAX_SHADERS; i++) { if (glsl->prg[i].id == 0 || (i && glsl->prg[i].id == glsl->prg[0].id)) continue; if (!glIsProgram(glsl->prg[i].id)) continue; glDeleteProgram(glsl->prg[i].id); } if (glsl->shader && glsl->shader->luts) glDeleteTextures(glsl->shader->luts, glsl->lut_textures); memset(glsl->prg, 0, sizeof(glsl->prg)); memset(glsl->uniforms, 0, sizeof(glsl->uniforms)); glsl->active_idx = 0; gl_glsl_deinit_shader(glsl); if (glsl->state_tracker) state_tracker_free(glsl->state_tracker); glsl->state_tracker = NULL; gl_glsl_reset_attrib(glsl); for (i = 0; i < GFX_MAX_SHADERS; i++) { if (glsl->vbo[i].vbo_primary) glDeleteBuffers(1, &glsl->vbo[i].vbo_primary); if (glsl->vbo[i].vbo_secondary) glDeleteBuffers(1, &glsl->vbo[i].vbo_secondary); free(glsl->vbo[i].buffer_primary); free(glsl->vbo[i].buffer_secondary); } memset(&glsl->vbo, 0, sizeof(glsl->vbo)); }
static void gl_glsl_destroy_resources(glsl_shader_data_t *glsl) { unsigned i; if (!glsl) return; glUseProgram(0); for (i = 0; i < GFX_MAX_SHADERS; i++) { if (glsl->gl_program[i] == 0 || (i && glsl->gl_program[i] == glsl->gl_program[0])) continue; glDeleteProgram(glsl->gl_program[i]); } if (glsl->shader && glsl->shader->luts) glDeleteTextures(glsl->shader->luts, glsl->gl_teximage); memset(glsl->gl_program, 0, sizeof(glsl->gl_program)); memset(glsl->gl_uniforms, 0, sizeof(glsl->gl_uniforms)); glsl->glsl_active_index = 0; gl_glsl_deinit_shader(glsl); if (glsl->gl_state_tracker) state_tracker_free(glsl->gl_state_tracker); glsl->gl_state_tracker = NULL; gl_glsl_reset_attrib(glsl); for (i = 0; i < GFX_MAX_SHADERS; i++) { if (glsl->glsl_vbo[i].vbo_primary) glDeleteBuffers(1, &glsl->glsl_vbo[i].vbo_primary); if (glsl->glsl_vbo[i].vbo_secondary) glDeleteBuffers(1, &glsl->glsl_vbo[i].vbo_secondary); free(glsl->glsl_vbo[i].buffer_primary); free(glsl->glsl_vbo[i].buffer_secondary); } memset(&glsl->glsl_vbo, 0, sizeof(glsl->glsl_vbo)); }