view LightClone/Source/VertexTypes.cpp @ 67:8e7ebab350e7

Clean up memory leaks
author koryspansel
date Fri, 07 Oct 2011 01:15:28 -0700
parents efd2b1ca5b77
children
line wrap: on
line source

/*
 * VertexTypes
 */

#include "VertexTypes.h"

/*
 * Vertex::Block::Declaration
 */
IDirect3DVertexDeclaration9* Vertex::Block::Declaration = NULL;

/*
 * Vertex::Quad::Declaration
 */
IDirect3DVertexDeclaration9* Vertex::Quad::Declaration = NULL;

/*
 * Vertex::ColorQuad::Declaration
 */
IDirect3DVertexDeclaration9* Vertex::ColorQuad::Declaration = NULL;

/*
 * InitializeVertexTypes
 */
ErrorCode InitializeVertexTypes(IDirect3DDevice9* pDevice)
{
	{
		const D3DVERTEXELEMENT9 kElements[] = 
		{
			{0,	0,	D3DDECLTYPE_FLOAT3,		D3DDECLMETHOD_DEFAULT,	D3DDECLUSAGE_POSITION,	0},
			{0, 12,	D3DDECLTYPE_FLOAT3,		D3DDECLMETHOD_DEFAULT,	D3DDECLUSAGE_NORMAL,	0},
			{0, 24,	D3DDECLTYPE_FLOAT2,		D3DDECLMETHOD_DEFAULT,	D3DDECLUSAGE_TEXCOORD,	0},

			D3DDECL_END(),
		};

		HRESULT hResult = pDevice->CreateVertexDeclaration(kElements, &Vertex::Block::Declaration);
		if(FAILED(hResult))
		{
			return Error_Fail;
		}
	}

	{
		const D3DVERTEXELEMENT9 kElements[] = 
		{
			{0,	0,	D3DDECLTYPE_FLOAT3,		D3DDECLMETHOD_DEFAULT,	D3DDECLUSAGE_POSITION,	0},
			{0, 12,	D3DDECLTYPE_FLOAT2,		D3DDECLMETHOD_DEFAULT,	D3DDECLUSAGE_TEXCOORD,	0},

			D3DDECL_END(),
		};

		HRESULT hResult = pDevice->CreateVertexDeclaration(kElements, &Vertex::Quad::Declaration);
		if(FAILED(hResult))
		{
			return Error_Fail;
		}
	}

	{
		const D3DVERTEXELEMENT9 kElements[] = 
		{
			{0,	0,	D3DDECLTYPE_FLOAT3,		D3DDECLMETHOD_DEFAULT,	D3DDECLUSAGE_POSITION,	0},
			{0, 12,	D3DDECLTYPE_FLOAT2,		D3DDECLMETHOD_DEFAULT,	D3DDECLUSAGE_TEXCOORD,	0},
			{0, 20,	D3DDECLTYPE_D3DCOLOR,	D3DDECLMETHOD_DEFAULT,	D3DDECLUSAGE_COLOR,		0},

			D3DDECL_END(),
		};

		HRESULT hResult = pDevice->CreateVertexDeclaration(kElements, &Vertex::ColorQuad::Declaration);
		if(FAILED(hResult))
		{
			return Error_Fail;
		}
	}

	return Error_Success;
}

/*
 * TerminateVertexTypes
 */
void TerminateVertexTypes()
{
	if(Vertex::Quad::Declaration)
	{
		Vertex::Quad::Declaration->Release();
		Vertex::Quad::Declaration = NULL;
	}

	if(Vertex::Block::Declaration)
	{
		Vertex::Block::Declaration->Release();
		Vertex::Block::Declaration = NULL;
	}
}