view LightClone/Source/VertexTypes.cpp @ 18:33cb6979ac51

More work on GUI system
author koryspansel
date Wed, 14 Sep 2011 17:24:49 -0700
parents 7e3a0ae9c016
children efd2b1ca5b77
line wrap: on
line source

/*
 * VertexTypes
 */

#include "VertexTypes.h"

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

/*
 * QuadVertex::Declaration
 */
IDirect3DVertexDeclaration9* Vertex::Quad::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;
		}
	}

	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;
	}
}