ok well ive written this vertex shader, now just to find out how to actualy use it...
struct VS_INPUT{ vector position : POSITION; vector uv : TEXCOORD; vector quad : TEXCOORD;};struct VS_OUTPUT{ vector position : POSITION; vector uv : TEXCOORD; vector diffuse : COLOR;};matrix WorldMatrix[100];//max 100 quads per batchmatrix ProjMatrix;matrix ViewMatrix;VS_OUTPUT Main(VS_INPUT input){ VS_OUTPUT output = (VS_OUTPUT)0; //move the vector to screen space vector position = input.position; position = mul(position, WorldMatix[input.quad]); position = mul(position, ProjMatix); position = mul(position, ViewMatix); output.position = position; output.diffuse = {1.0f, 1.0f, 1.0f, 1.0f};//white output.uv = input.uv; return output;}
A is this the right vertex declaration for that?
struct VertexQuad{ float x, y, z;//float3 position0 float u,v; //float2 texcords0 float quad; //int texcords1 VertexQuad(const float x, const float y, const float z, const float u, const float v, const float quad);}... D3DVERTEXELEMENT9 decl[] = { {0, 0 , D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},//x,y,z {0, 12, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0},//u,v {0, 24, D3DDECLTYPE_FLOAT1, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 1},//quad D3DDECL_END() };
[Edited by - Sync Views on May 21, 2008 1:14:07 AM]