2017-05-29 81 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

我画了前三个,看到了一个左角的三角形,现在我更好地理解了代码,谢谢你们 –