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
入力要素の配列内の入力データ型の数。
[in] pShaderBytecodeWithInputSignature
型: const void*
コンパイルされたシェーダーへのポインター。 このポインターを取得するには、「 コンパイル済みシェーダーへのポインターの取得」を参照してください。 コンパイルされたシェーダー コードには、要素の配列に対して検証される 入力シグネチャ が含まれています。 「解説」を参照してください。
[in] BytecodeLength
種類: SIZE_T
コンパイルされたシェーダーのサイズ。
[out] ppInputLayout
種類: ID3D10InputLayout**
作成された入力レイアウト オブジェクトへのポインター ( 「ID3D10InputLayout インターフェイス」を参照)。 他の入力パラメーターを検証するには、このポインターを NULL に設定し、メソッドがS_FALSEを返すかどうかを確認します。
戻り値
種類: HRESULT
メソッドが成功した場合、戻りコードはS_OK。 失敗したエラー コードについては、「 Direct3D 10 リターン コード 」を参照してください。
解説
入力レイアウト オブジェクトを作成した後、描画 API を呼び出す前に、入力アセンブラー ステージにバインドする必要があります。 コード例については、「Input-Assembler ステージ (Direct3D 10) を使用したはじめに」を参照してください。
シェーダー シグネチャから入力レイアウト オブジェクトを作成すると、入力レイアウト オブジェクトは、同じ入力シグネチャ (セマンティクスが含まれる) を持つ他のシェーダーと共に再利用できます。 これにより、同じ入力を持つ多数のシェーダーを操作する場合に、入力レイアウト オブジェクトの作成を簡略化できます。
入力レイアウト宣言のデータ型がシェーダー入力シグネチャのデータ型と一致しない場合、CreateInputLayout はコンパイル中に警告を生成します。 警告は、レジスタからの読み取り時にデータが再解釈される可能性があるという事実に注意を払うだけです。 この警告を無視するか (再解釈が意図的な場合)、両方の宣言でデータ型を一致させ、警告を排除できます。 データ変換ルールの概要では、データ型変換に適用されるルールについて説明します。
Direct3D 9 と Direct3D 10 の違い: 入力レイアウトを使用して頂点データをシェーダー入力にマッピングすることは、Direct3D 10 でパフォーマンスを向上させる新しい方法です。 Direct3D 10 では、入力レイアウト オブジェクトの作成時に頂点データがシェーダー入力にマップされますが、Direct3D 9 では、このマッピングは現在バインドされている頂点宣言、頂点バッファー、頂点シェーダーに基づいて描画時に行われました。 入力レイアウト オブジェクトが作成されたときにこのマッピングを実行すると、描画時にドライバーの追加のリンケージ作業が削減または排除されます。これは、この再マッピングは不要になるためです。 |
必要条件
対象プラットフォーム | Windows |
ヘッダー | d3d10.h |
Library | D3D10.lib |