2017-05-29 6 views
0

Ich bin neu in StackOverflow.DirectX11 Texturkoordinaten und Vertices

Ich studiere DirectX11 aus dem Buch Anfang DirectX11 und ich bin ein kompletter Anfänger, aber ich habe Kenntnisse von C++. Ich bin auf Texturkoordinaten gestoßen und wie sie verwendet werden, aber ich verstehe den Codeschnipsel nicht, der zum Angeben der Scheitelpunkte verwendet wird. Unten ist der Code:

// 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; 
} 

Ich verstehe nicht, warum 6 Positionen angegeben sind. Wenn es ein Rechteck zu machen ist, ist es nicht möglich, 4 Werte zu spezifizieren und ein Rechteck aus zwei Dreiecken zu machen? Dies lädt ein Texturbild und zeigt es an. Ich würde gerne wissen, wie die Scheitelpunkte funktionieren (wenn möglich mit einer Zeichnung, die die Position jedes Scheitelpunkts angibt).

+0

Bitte erklären Sie den Unterschied sehen Sie zwischen „angeben können 4 Werte und mache ein Rechteck aus zwei Dreiecken "und" benutze vier verschiedene Koordinaten (zwei davon zweimal), in zwei Gruppen (jede mit drei verschiedenen), für zwei Dreiecke ". Letzteres ist was der zitierte Code tut, nicht wahr? – Yunnosch

+0

Ich bin nicht sicher, was der Code mit den 6 Positionen tut .. und wie die Positionen mit der Textur Zuordnung verwendet werden sollen, ich verstehe –

Antwort

2

ich dieses Beispiel sagen würde verwendet echte Dreiecke (jedes Dreieck drei Eckpunkte zusammen 6), wenn Sie 4 Eckpunkte wollen und zwei Dreiecke Sie Dreieck-Streifen https://en.wikipedia.org/wiki/Triangle_strip

+0

eigentlich nicht, es verwendet Dreiecksliste im Code .. was ich brauche zu wissen ist, wie die Scheitelpunkte mit der gemappten Textur verwendet werden. –

+1

Die ersten 3 Scheitelpunkte sind ein Dreieck und die zweiten 3 Verts sind ein Dreieck. Eine Dreiecksliste ist eine Liste von ganzen Dreiecken. –

+0

Ich zeichnete die ersten drei und sah ein rechtwinkliges Dreieck, jetzt verstehe ich den Code besser, danke Jungs –

Verwandte Themen