topical media & game development
graphic-directx-game-22-DisplacementMap-Vertex.h / h
//=============================================================================
// Vertex.h by Frank Luna (C) 2005 All Rights Reserved.
//
// This file contains all of our vertex structures. We will add to it
// as needed throughout the book.
//=============================================================================
include <d3dx9.h>
ifndef VERTEX_H
define VERTEX_H
// Call in constructor and destructor, respectively, of derived application class.
void InitAllVertexDeclarations();
void DestroyAllVertexDeclarations();
//===============================================================
struct VertexPos
{
VertexPos():pos(0.0f, 0.0f, 0.0f){}
VertexPos(float x, float y, float z):pos(x,y,z){}
VertexPos(const D3DXVECTOR3& v):pos(v){}
D3DXVECTOR3 pos;
static IDirect3DVertexDeclaration9* Decl;
};
//===============================================================
struct VertexCol
{
VertexCol():pos(0.0f, 0.0f, 0.0f),col(0x00000000){}
VertexCol(float x, float y, float z, D3DCOLOR c):pos(x,y,z), col(c){}
VertexCol(const D3DXVECTOR3& v, D3DCOLOR c):pos(v),col(c){}
D3DXVECTOR3 pos;
D3DCOLOR col;
static IDirect3DVertexDeclaration9* Decl;
};
//===============================================================
struct VertexPN
{
VertexPN()
:pos(0.0f, 0.0f, 0.0f),
normal(0.0f, 0.0f, 0.0f){}
VertexPN(float x, float y, float z,
float nx, float ny, float nz):pos(x,y,z), normal(nx,ny,nz){}
VertexPN(const D3DXVECTOR3& v, const D3DXVECTOR3& n)
:pos(v),normal(n){}
D3DXVECTOR3 pos;
D3DXVECTOR3 normal;
static IDirect3DVertexDeclaration9* Decl;
};
//===============================================================
struct VertexPT
{
VertexPT()
:pos(0.0f, 0.0f, 0.0f),
tex0(0.0f, 0.0f){}
VertexPT(float x, float y, float z,
float u, float v):pos(x,y,z), tex0(u,v){}
VertexPT(const D3DXVECTOR3& v, const D3DXVECTOR2& uv)
:pos(v), tex0(uv){}
D3DXVECTOR3 pos;
D3DXVECTOR2 tex0;
static IDirect3DVertexDeclaration9* Decl;
};
//===============================================================
struct VertexPNT
{
VertexPNT()
:pos(0.0f, 0.0f, 0.0f),
normal(0.0f, 0.0f, 0.0f),
tex0(0.0f, 0.0f){}
VertexPNT(float x, float y, float z,
float nx, float ny, float nz,
float u, float v):pos(x,y,z), normal(nx,ny,nz), tex0(u,v){}
VertexPNT(const D3DXVECTOR3& v, const D3DXVECTOR3& n, const D3DXVECTOR2& uv)
:pos(v),normal(n), tex0(uv){}
D3DXVECTOR3 pos;
D3DXVECTOR3 normal;
D3DXVECTOR2 tex0;
static IDirect3DVertexDeclaration9* Decl;
};
//===============================================================
struct GrassVertex
{
GrassVertex()
:pos(0.0f, 0.0f, 0.0f),
tex0(0.0f, 0.0f),
amplitude(0.0f){}
GrassVertex(const D3DXVECTOR3& v,
const D3DXVECTOR2& uv, float amp)
:pos(v), tex0(uv), amplitude(amp){}
D3DXVECTOR3 pos;
D3DXVECTOR3 quadPos;
D3DXVECTOR2 tex0;
float amplitude; // for wind oscillation.
D3DCOLOR colorOffset;
static IDirect3DVertexDeclaration9* Decl;
};
//===============================================================
struct NMapVertex
{
D3DXVECTOR3 pos;
D3DXVECTOR3 tangent;
D3DXVECTOR3 binormal;
D3DXVECTOR3 normal;
D3DXVECTOR2 tex0;
static IDirect3DVertexDeclaration9* Decl;
};
//===============================================================
struct WaterDMapVertex
{
D3DXVECTOR3 pos;
D3DXVECTOR2 scaledTexC; // [a, b]
D3DXVECTOR2 normalizedTexC; // [0, 1]
static IDirect3DVertexDeclaration9* Decl;
};
endif // VERTEX_H
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.