【发布时间】: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