RPC: https://github.com/walbourn/directx-sdk-samples/blob/master/Direct3D11TutorialsDXUT/Tutorial08/Tutorial08.cppDirectX 11 Matrice Traduction intérieur Vertex Shader ou CPU
A l'intérieur des échantillons DirectX (tutoriel 8), ils sont en cours d'initialisation des sommets avec coords locaux (je pense, pas que la terminologie correcte)
// Create vertex buffer
SimpleVertex vertices[] =
{
{ XMFLOAT3(-1.0f, 1.0f, -1.0f), XMFLOAT2(1.0f, 0.0f) },
{ XMFLOAT3(1.0f, 1.0f, -1.0f), XMFLOAT2(0.0f, 0.0f) },
{ XMFLOAT3(1.0f, 1.0f, 1.0f), XMFLOAT2(0.0f, 1.0f) },
{ XMFLOAT3(-1.0f, 1.0f, 1.0f), XMFLOAT2(1.0f, 1.0f) },
{ XMFLOAT3(-1.0f, -1.0f, -1.0f), XMFLOAT2(0.0f, 0.0f) },
{ XMFLOAT3(1.0f, -1.0f, -1.0f), XMFLOAT2(1.0f, 0.0f) },
{ XMFLOAT3(1.0f, -1.0f, 1.0f), XMFLOAT2(1.0f, 1.0f) },
{ XMFLOAT3(-1.0f, -1.0f, 1.0f), XMFLOAT2(0.0f, 1.0f) },
{ XMFLOAT3(-1.0f, -1.0f, 1.0f), XMFLOAT2(0.0f, 1.0f) },
{ XMFLOAT3(-1.0f, -1.0f, -1.0f), XMFLOAT2(1.0f, 1.0f) },
{ XMFLOAT3(-1.0f, 1.0f, -1.0f), XMFLOAT2(1.0f, 0.0f) },
{ XMFLOAT3(-1.0f, 1.0f, 1.0f), XMFLOAT2(0.0f, 0.0f) },
{ XMFLOAT3(1.0f, -1.0f, 1.0f), XMFLOAT2(1.0f, 1.0f) },
{ XMFLOAT3(1.0f, -1.0f, -1.0f), XMFLOAT2(0.0f, 1.0f) },
{ XMFLOAT3(1.0f, 1.0f, -1.0f), XMFLOAT2(0.0f, 0.0f) },
{ XMFLOAT3(1.0f, 1.0f, 1.0f), XMFLOAT2(1.0f, 0.0f) },
{ XMFLOAT3(-1.0f, -1.0f, -1.0f), XMFLOAT2(0.0f, 1.0f) },
{ XMFLOAT3(1.0f, -1.0f, -1.0f), XMFLOAT2(1.0f, 1.0f) },
{ XMFLOAT3(1.0f, 1.0f, -1.0f), XMFLOAT2(1.0f, 0.0f) },
{ XMFLOAT3(-1.0f, 1.0f, -1.0f), XMFLOAT2(0.0f, 0.0f) },
{ XMFLOAT3(-1.0f, -1.0f, 1.0f), XMFLOAT2(1.0f, 1.0f) },
{ XMFLOAT3(1.0f, -1.0f, 1.0f), XMFLOAT2(0.0f, 1.0f) },
{ XMFLOAT3(1.0f, 1.0f, 1.0f), XMFLOAT2(0.0f, 0.0f) },
{ XMFLOAT3(-1.0f, 1.0f, 1.0f), XMFLOAT2(1.0f, 0.0f) },
};
Mais ils traduisent la position par un Vertex Shader:
XMMATRIX mWorldViewProjection = g_World * g_View * g_Projection;
Ma question est:
1: Si cela était un objet statique (sans bouger/animant), vous voulez toujours de traduire la position mondiale (Je ne sais pas le terminaology correct) ou voudriez-vous placer l'objet dans le bon espace 3D/scène lors de l'initialisation des sommets, par exemple:
{ XMFLOAT3(CorrectWorldX, CorrectWorldY, CorrectWorldZ), XMFLOAT2(1.0f, 0.0f) },
un parfait exemple de ce serait un niveau/terrain généré de façon aléatoire.
2: Quelle est la performance atteinte si vous utilisiez le shader pour positionner l'emplacement dans l'espace 3D correct plutôt que de simplement le faire lors de l'initialisation des sommets?
3: Pour l'animation c'est la méthode préférée pour la transformation osseuse des animations de caractères? 4: Lors de la construction d'un niveau (placer des objets), je suppose que vous n'avez pas d'autre choix que de traduire via le shader, mais vous pouvez également sauvegarder la position finale.
J'espère que c'est clair, car j'apprends DirectX 11 et corrige les pratiques!
Merci! Exactement ce que je cherchais! – Mike5050