質問
これは、DirectX 9のことだ。
頂点シェーダとレンダリングの典型的な場合には、そこにデバイスに設定された1つのまたは複数のストリームソースだ、ソースデータのフォーマットは、頂点宣言を使用して定義されます。
さて、使用頂点シェーダは、(例えば、D3DDECLUSAGE_NORMALとUsageIndex 1または2と1)、その属性を持っていない提供していますが、頂点宣言が含まれ、いくつかの属性を必要とする場合(すなわちないストリームソースで提供されたデータその属性)を含み、そしてDrawPrimitiveを呼ばれ、どこDirectXはその属性の値を取得していますか?
解決
「頂点ストリームのデータは、対応するシェーダデータタイプよりも少ない構成要素が含まれている場合は、不足しているコンポーネント(1に初期化され、W、を除く)を0に初期化されます。」
"(2009年8月)のWindowsのDirectX Graphicsドキュメント" から撮影。
コンテンツ> HLSL>プログラミングガイド> Direct3Dの9にHLSLシェーダを書く>を変化させたシェーダの入力およびセマンティクス
他のヒント
DirectX 9の仕様は、(0,0,0,1)は、通常、宣言されていない属性の "デフォルト" 値を定義します。デバイスドライバやGPUのどちらかがそれらを作成します。
所属していません StackOverflow