【问题标题】:DirectX11 texture coordinates and verticesDirectX11 纹理坐标和顶点
【发布时间】:2017-05-29 11:21:30
【问题描述】:

我是 StackOverflow 的新手。

我正在从《Beginning Directx11》一书中学习 DirectX11,我是一个完整的初学者,但我确实了解 C++。我遇到过纹理坐标以及它们的使用方式,但我不了解用于指定顶点的代码的 sn-p。下面是代码:

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

【问题讨论】:

  • 请解释您在“指定 4 个值并从两个三角形制作一个矩形”和“使用四个不同的坐标(使用其中两个两次),在两组(每组三个不同)之间看到的区别, 对于两个三角形”。后者就是引用代码的作用,不是吗?
  • 我不确定代码对 6 个位置做了什么......以及这些位置是如何与纹理映射一起使用的,我不明白

标签: c++ textures directx-11 vertices


【解决方案1】:

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

【讨论】:

  • 实际上,它在代码中使用三角形列表..我需要知道的是顶点如何与被映射的纹理一起使用..
  • 前3个顶点是三角形,后3个顶点是三角形。三角形列表是整个三角形的列表。
  • 我画了前三个,看到了一个左角三角形,现在我更好地理解了代码,谢谢大家
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
相关资源
最近更新 更多