2017-05-29 4 views
0

Je suis nouveau à StackOverflow. J'étudie DirectX11 à partir du livre Beginning Directx11 et je suis un débutant complet mais j'ai des connaissances en C++. J'ai trouvé des coordonnées de texture et comment elles sont utilisées mais je ne comprends pas l'extrait de code utilisé pour spécifier les sommets. Ci-dessous le code:DirectX11 coordonnées de la texture et les sommets

// the structure used to store the vertices 
struct VertexPos 
{ 
    XMFLOAT3 pos; 
    XMFLOAT2 tex0; 
}; 

// some code before reaching this point 
... 
VertexPos vertices[] = 
{ 
    { 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(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) }, 
}; 
... 

// shader file 
Texture2D colorMap_ : register(t0); 
SamplerState colorSampler_ : register(s0); 


struct VS_Input 
{ 
    float4 pos : POSITION; 
    float2 tex0 : TEXCOORD0; 
}; 

struct PS_Input 
{ 
    float4 pos : SV_POSITION; 
    float2 tex0 : TEXCOORD0; 
}; 


PS_Input VS_Main(VS_Input vertex) 
{ 
    PS_Input vsOut = (PS_Input)0; 
    vsOut.pos = vertex.pos; 
    vsOut.tex0 = vertex.tex0; 

    return vsOut; 
} 

Je ne comprends pas pourquoi il y a 6 positions spécifiées. Si c'est pour faire un rectangle, n'est-il pas possible de spécifier 4 valeurs et de faire un rectangle à partir de deux triangles? Cela charge une image de texture et l'affiche, je voudrais savoir comment fonctionnent les vertices (si possible avec un dessin spécifiant la position de chaque sommet).

+0

S'il vous plaît expliquer la différence que vous voyez entre « préciser 4 valeurs et faire un rectangle à partir de deux triangles "et" utiliser quatre coordonnées différentes (en utilisant deux d'entre eux deux fois), en deux groupes (chacun avec trois différents), pour deux triangles ". Ce dernier est ce que fait le code cité, n'est-ce pas? – Yunnosch

+0

je ne suis pas sûr de ce que le code fait avec les 6 positions .. et comment les positions sont destinées à être utilisées avec le mappage de texture, je ne comprends pas –

Répondre

2

Je dirais que cet exemple utilise des triangles réels (chaque triangle 3 sommets ensemble 6), si vous voulez 4 sommets et deux triangles que vous pouvez utiliser Triangle bande https://en.wikipedia.org/wiki/Triangle_strip

+0

en fait, il utilise Triangle List dans le code .. ce dont j'ai besoin savoir comment les sommets sont utilisés avec la texture en cours de cartographie. –

+1

Les 3 premiers sommets sont un triangle, et les 3 autres vert sont un triangle. Une liste Triangle est une liste de triangles entiers. –

+0

j'ai dessiné les trois premiers et j'ai vu un triangle à angle gauche, maintenant je comprends mieux le code, merci les gars –