我是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个值并从两个三角形构成一个矩形?这会加载纹理图像并显示它,我想知道顶点是如何工作的(如果可能的话,绘制指定每个顶点的位置)。
请解释你们之间看到的差异“指定4个值和从两个三角形“做一个矩形”,“使用四个不同的坐标(使用两个三角形),两个组(每个都有三个不同的),两个三角形”。后者是引用的代码所做的,不是吗? – Yunnosch
我不确定代码与6个位置做什么..以及位置是如何与纹理贴图一起使用的,我不明白 –