Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: McBain en 24 de Mayo de 2006, 08:40:34 PM

Título: Directx Release
Publicado por: McBain en 24 de Mayo de 2006, 08:40:34 PM
 Llevo unos días peleandome con Direct3D y he decidido empezar aislar toda esa cacharrería en clases (me refiero a la inicialización y la posterior liberación de memoria). Me preguntaba si todo lo que se libera con el método Release, se puede poner en el destructor de la clase? O no, eso lo he de hacer manualmente?
Título: Directx Release
Publicado por: McBain en 28 de Mayo de 2006, 06:43:01 PM
 Por favor que alguien me conteste.
Título: Directx Release
Publicado por: Astat en 28 de Mayo de 2006, 11:17:47 PM
 A ver si he entendido bien tu pregunta. Dices que tienes una clase que encapsula cosas de DX y preguntas que lo que liberas en Release si lo puedes poner en el destructor?

osea que si esto:


void cVideoDX9::Release()
{
 RELEASENULL(m_pD3D9);
 delete this;
}


y esto:


void cVideoDX9::Release()
{
 delete this;
}


void cVideoDX9::~cVideoDX9()
{
 RELEASENULL(m_pD3D9);
}


es correcto?

Si es eso lo que preguntas, ambas formulas son validas. En la primera liberas el interface y luego llamas al destructor, y en la segunda al reves.

A mi personalmente me gusta mas la segunda (suelo poner el Release en el .h)
Título: Directx Release
Publicado por: McBain en 30 de Mayo de 2006, 06:54:19 PM
 Era eso justo lo que quería saber gracias.