D3D11
+ -

输入布局

2024-11-25 20 0

输入布局不得不从文章https://www.vaczh.com/article/detail-48.html 中引用下张图片:
输入布局

输入布局指的是顶点着色器的输入布局

输入布局使用D3D11_INPUT_ELEMENT_DESC结构体来描述

typedef struct D3D11_INPUT_ELEMENT_DESC {
  LPCSTR                     SemanticName; //语义名称
  UINT                       SemanticIndex;//语义名称索引
  DXGI_FORMAT                Format;
  UINT                       InputSlot;
  UINT                       AlignedByteOffset;
  D3D11_INPUT_CLASSIFICATION InputSlotClass;
  UINT                       InstanceDataStepRate;
} D3D11_INPUT_ELEMENT_DESC;

语义支持的有:

输入 说明 类型
BINORMAL[n] Binormal float4
BLENDINDICES[n] 混合索引 uint
BLENDWEIGHT[n] 混合权重 FLOAT
COLOR[n] 漫射和反射颜色 float4
NORMAL[n] 法向矢量 float4
POSITION[n] 对象空间中的顶点位置。 float4
POSITIONT 变换的顶点位置。 float4
PSIZE[n] 点大小 FLOAT
TANGENT[n] 正切 float4
TEXCOORD[n] 纹理坐标 float4

一个示例如下:

    // 创建顶点布局
    D3D11_INPUT_ELEMENT_DESC vertexLayout[2] = {
        { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
        { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 },
    };

    HR(md3dDevice->CreateInputLayout(vertexLayout, ARRAYSIZE(vertexLayout), blob->GetBufferPointer(), blob->GetBufferSize(), &mVertexLayout));
    md3dImmediateContext->IASetInputLayout(mVertexLayout);// 设定输入布局
    ReleaseCOM(blob)

顶点着色器的代码可见:

cbuffer cbPerObject : register(b0)
{
    row_major matrix wvp;    // 默认列主矩阵
    float gTime;
};

struct VertexIn
{
    float3 PosL : POSITION;
    float4 Color : COLOR;
};

struct VertexOut
{
    float4 PosH : SV_POSITION;
    float4 Color : COLOR;
};

VertexOut VS(VertexIn pIn)
{
    // 练习6.6 shader在重新生成时,记得将vso和pso文件给删除 
    //pIn.PosL.xy += 0.5f*sin(pIn.PosL.x)*sin(3.0f*gTime);
    //pIn.PosL.z *= 0.6f + 0.4f*sin(2.0f*gTime);

    VertexOut pOut;
    pOut.PosH = mul(float4(pIn.PosL, 1.0f), wvp);

    pOut.Color = pIn.Color;
    return pOut;
}

0 篇笔记 写笔记

3.3.2输入装配状态配置
在将适当的资源绑定到顶点和索引缓冲区槽之后,在使用输入装配程序之前,必须在输入装配程序中设置另外两个配置。第一个是输入布局对象,输入装配程序使用它来知道从哪个输入槽读取逐顶点数据以构建完整的顶点。第二个参数是输入装配程序应该使用的基元拓扑,以确定如何将顶点分组到基元中。这两种状态与用于执行管道......
输入布局
输入布局不得不从文章https://www.vaczh.com/article/detail-48.html 中引用下张图片:输入布局指的是顶点着色器的输入布局输入布局使用D3D11_INPUT_ELEMENT_DESC结构体来描述typedef struct D3D11_INPUT_EL......
作者信息
站长漫谈
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!