static void gl_cg_destroy_resources(void *data) { cg_shader_data_t *cg_data = (cg_shader_data_t*)data; if (!cg_data) return; gl_cg_reset_attrib(data); gl_cg_deinit_progs(data); if (cg_data->shader && cg_data->shader->luts) { glDeleteTextures(cg_data->shader->luts, cg_data->lut_textures); memset(cg_data->lut_textures, 0, sizeof(cg_data->lut_textures)); } if (cg_data->state_tracker) { state_tracker_free(cg_data->state_tracker); cg_data->state_tracker = NULL; } free(cg_data->shader); cg_data->shader = NULL; }
static void gl_cg_deinit_state(void) { gl_cg_reset_attrib(); cg_active = false; gl_cg_deinit_progs(); if (cg_shader && cg_shader->luts) { glDeleteTextures(cg_shader->luts, lut_textures); memset(lut_textures, 0, sizeof(lut_textures)); } if (state_tracker) { state_tracker_free(state_tracker); state_tracker = NULL; } free(cg_shader); cg_shader = NULL; }