void renderchain_clear(void *data) { renderchain_t *chain = (renderchain_t*)data; for (unsigned i = 0; i < TEXTURES; i++) { if (chain->prev.tex[i]) chain->prev.tex[i]->Release(); if (chain->prev.vertex_buf[i]) chain->prev.vertex_buf[i]->Release(); } if (chain->passes[0].vertex_decl) chain->passes[0].vertex_decl->Release(); for (unsigned i = 1; i < chain->passes.size(); i++) { if (chain->passes[i].tex) chain->passes[i].tex->Release(); if (chain->passes[i].vertex_buf) chain->passes[i].vertex_buf->Release(); if (chain->passes[i].vertex_decl) chain->passes[i].vertex_decl->Release(); renderchain_destroy_shader(chain, i); } for (unsigned i = 0; i < chain->luts.size(); i++) { if (chain->luts[i].tex) chain->luts[i].tex->Release(); } chain->passes.clear(); chain->luts.clear(); }
static void cg_d3d9_renderchain_clear_passes(cg_renderchain_t *chain) { unsigned i; if (chain->passes.size() == 0) return; d3d_vertex_buffer_free(NULL, chain->passes[0].vertex_decl); for (i = 1; i < chain->passes.size(); i++) { if (chain->passes[i].tex) d3d_texture_free(chain->passes[i].tex); chain->passes[i].tex = NULL; d3d_vertex_buffer_free(chain->passes[i].vertex_buf, chain->passes[i].vertex_decl); renderchain_destroy_shader(chain, i); } }