2017-05-29 78 views
0

我是StackOverflow的新手。DirectX11紋理座標和頂點

我正在學習DirectX11的Beginning Directx11,我是一個完整的初學者,但我確實掌握了C++的知識。我遇到了紋理座標以及它們如何使用,但我不明白用於指定頂點的代碼片段。以下是代碼:

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

我不明白爲什麼有6個指定位置。如果要製作一個矩形,是不是可以指定4個值並從兩個三角形構成一個矩形?這會加載紋理圖像並顯示它,我想知道頂點是如何工作的(如果可能的話,繪製指定每個頂點的位置)。

+0

請解釋你們之間看到的差異「指定4個值和從兩個三角形「做一個矩形」,「使用四個不同的座標(使用兩個三角形),兩個組(每個都有三個不同的),兩個三角形」。後者是引用的代碼所做的,不是嗎? – Yunnosch

+0

我不確定代碼與6個位置做什麼..以及位置是如何與紋理貼圖一起使用的,我不明白 –

回答

2

我會說這個例子中使用真實的三角形(每個三角形3個頂點一起6),如果你想4個頂點和兩個三角形,您可以使用三角地帶https://en.wikipedia.org/wiki/Triangle_strip

+0

實際上,它在代碼中使用三角形列表。我需要什麼要知道頂點是如何與被映射的紋理一起使用的。 –

+1

前3個頂點是三角形,後3個頂點是三角形。三角形列表是整個三角形的列表。 –

+0

我畫了前三個,看到了一個左角的三角形,現在我更好地理解了代碼,謝謝你們 –