ID3D10Device::CreateInputLayout 方法 (d3d10.h)

创建输入布局对象来描述输入 装配器阶段的输入缓冲区数据。

语法

HRESULT CreateInputLayout(
  [in]  const D3D10_INPUT_ELEMENT_DESC *pInputElementDescs,
  [in]  UINT                           NumElements,
  [in]  const void                     *pShaderBytecodeWithInputSignature,
  [in]  SIZE_T                         BytecodeLength,
  [out] ID3D10InputLayout              **ppInputLayout
);

参数

[in] pInputElementDescs

类型: const D3D10_INPUT_ELEMENT_DESC*

输入装配器阶段输入数据类型的数组;每种类型都由元素说明进行描述, (请参阅 D3D10_INPUT_ELEMENT_DESC) 。

[in] NumElements

类型: UINT

input-elements 数组中的输入数据类型数。

[in] pShaderBytecodeWithInputSignature

类型: const void*

指向已编译着色器的指针。 若要获取此指针,请参阅 获取指向已编译着色器的指针。 编译的着色器代码包含一个 输入签名 ,该签名针对元素数组进行验证。 请参阅备注。

[in] BytecodeLength

类型: SIZE_T

已编译的着色器的大小。

[out] ppInputLayout

类型: ID3D10InputLayout**

指向创建的输入布局对象的指针 (请参阅 ID3D10InputLayout 接口) 。 若要验证其他输入参数,请将此指针设置为 NULL ,并验证方法是否返回S_FALSE。

返回值

类型: HRESULT

如果该方法成功,则返回代码S_OK。 有关失败的错误代码,请参阅 Direct3D 10 返回代码

注解

创建输入布局对象后,必须在调用绘图 API 之前将其绑定到输入装配器阶段。 有关示例代码,请参阅使用 Input-Assembler Stage (Direct3D 10) 入门

从着色器签名创建输入布局对象后,可以将输入布局对象与任何其他具有相同输入签名的着色器重复使用, () 中包含的语义。 当你使用具有相同输入的许多着色器时,这可以简化输入布局对象的创建。

如果输入布局声明中的数据类型与着色器输入签名中的数据类型不匹配,则 CreateInputLayout 将在编译期间生成警告。 警告只是为了提醒人们注意从寄存器读取数据时可能会重新解释这一事实。 如果重新解释是有意) ,则可以忽略此警告 (,或者使两个声明中的数据类型匹配以消除警告。 数据转换规则概述介绍了应用于数据类型转换的规则。

Direct3D 9 与 Direct3D 10 之间的差异:

使用输入布局将顶点数据映射到着色器输入是 Direct3D 10 中执行操作的一种新方法,可提高性能。

在 Direct3D 10 中,顶点数据在创建输入布局对象时映射到着色器输入,而在 Direct3D 9 中,此映射是在绘图时基于当前绑定的顶点声明、顶点缓冲区和顶点着色器完成的。 在创建输入布局对象时执行此映射会减少或消除在 Draw 时间对驱动程序的额外链接工作,因为不再需要这种重新映射。

要求

   
目标平台 Windows
标头 d3d10.h
Library D3D10.lib

另请参阅

ID3D10Device 接口