DirectX11纹理坐标和顶点

时间:2017-05-29 11:21:30

标签: c++ textures directx-11 vertices

我是StackOverflow的新手。

我正在从Beginning Directx11这本书学习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个值并从两个三角形中制作一个矩形?这会加载纹理图像并显示它,我想知道顶点是如何工作的(如果可能的话,使用指定每个顶点位置的图形)。

1 个答案:

答案 0 :(得分:2)

我想说这个例子使用真实三角形(每个三角形3个顶点一起6个),如果你想要4个顶点和两个三角形,你可以使用Triangle Strip https://en.wikipedia.org/wiki/Triangle_strip