Skip to main content
gamedev.net
🔒 Locked

DX9 Conversion question

Started by MagTDK 0 replies 2.2k views
Original Post
MagTDK
MagTDK
In DX8.1, I coded the following:
  
DWORD TweenShader;

DWORD ShaderDeclaration[] =
{
D3DVSD_STREAM(0),
D3DVSD_REG(D3DVSDE_POSITION,   D3DVSDT_FLOAT3),
D3DVSD_STREAM(1),
D3DVSD_REG(D3DVSDE_DIFFUSE, D3DVSDT_D3DCOLOR),
D3DVSD_STREAM(2),
D3DVSD_REG(D3DVSDE_TEXCOORD0,  D3DVSDT_FLOAT2),
D3DVSD_STREAM(3),
D3DVSD_REG(D3DVSDE_POSITION2,  D3DVSDT_FLOAT3),
D3DVSD_END()
};

pDevice->CreateVertexShader (ShaderDeclaration, NULL, &TweenShader, 0);

// In my rendering function.

pDDevice->SetVertexShader (TweenShader);
  
Now I''m trying to convert this to DX9 but am having problems. Here''s what I have:
  
D3DVERTEXELEMENT9 ShaderDeclaration[] =
{
{0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
{1, 0, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_COLOR, 0},
{2, 0, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0},
{3, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
D3DDECL_END()
};
  
How do I go about creating the vertex shader?
Jim Adams
Jim Adams
You might want to correct that declaration to:

D3DVERTEXELEMENT9 ShaderDeclaration[] = {

{0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},

{0, 12, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_COLOR, 0},

{0, 16, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0},

{0, 24, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 1},

D3DDECL_END()

};


The 1st number is the stream, the 2nd number is the byte offset, the 3rd is usage type, 4th is suggested data type, and 5th is type index (position0, position1, etc).

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.