[PixelShader] problème de multiplication de matrice de vue
Bonjour, j'essaye en vain d'avoir les coordonnées de texture de mon modèle projeter par la caméra, j'envoi donc la matrice monde*vue*projection à mon shader et procède comme suit:
Code:
1 2
| float2 uv=mul(float4(data.position,1),matwvp);
result.color=tex2D(diffuseMap, uv.xy); |
Donc sans parler du 0.5 à ajouter à u et v, je me retrouve avec la texture qui se répète un grand nombre de fois qui n'a pas l'air de dépendre de la distance avec la caméra, comme si la matrice de vue était bien utilisé mais pas celle de projection.
Pourtant si je fait l'équivalent dans le programme:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| CUSTOMVERTEX* pVertices;
Sol->m_pSysMemMesh->LockVertexBuffer( 0L, (LPVOID*)&pVertices );
const int VertexCount= Sol->m_pSysMemMesh->GetNumVertices();
D3DXMATRIX matwvp = matworld*matView*matProj;
D3DXVECTOR3 V;
for( int i=0; i<VertexCount; i++ )
{
D3DXVec3TransformCoord(&V,&pVertices[i].position,&matwvp);
pVertices[i].u=V.x+0.5f;
pVertices[i].v=V.y+0.5f;
}
Sol->m_pSysMemMesh->UnlockVertexBuffer(); |
Là ça marche très bien.
Quel est le soucis ? Est-ce qu'il ne faut pas employer "mul" ?
Merci