Exemple #1
0
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);
   }
}