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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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