//============================================================================= // 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 #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