SetMatrix() does not copy all values to HLSL
Posted
by Tili
on Stack Overflow
See other posts from Stack Overflow
or by Tili
Published on 2010-05-29T20:20:42Z
Indexed on
2010/05/29
20:32 UTC
Read the original article
Hit count: 171
Hi,
I want to use the contents of a vector of D3DXMatrices to my shader.
m_pLightMatrices->SetMatrixArray(¤tLightMatrices[0].m[0][0],0,numLights);
As we know the internals of a vector this poses no problems (as it is just a dynamic array).
Now when I access this matrix in hlsl to fill up a struct I get this strange behavior:
struct LightTest
{
float3 LightPos;
float LightRange;
float4 LightDiffuse;
float3 LightAtt;
};
float4x4 currentLight = gLights[0];
LightTest lt;
lt.LightPos = currentLight._m00_m01_m02; //{0,0,0}
lt.LightDiffuse = currentLight[1].rgba; //{0,0,0,0}
lt.LightRange = currentLight._m03; //this gives me a value
lt.LightAtt = currentLight[2].xyz; //{0,0,0}
While debugging I see that my matrix is nicely filled with the variables I want. When I try to hardcode check what is in the struct I get all zero's, except the LightRange.
As you can see I tried different methods of accessing the float4x4 but without any other results.
Why oh why is hlsl not copying all my variables ?
© Stack Overflow or respective owner