2017-06-10 7 views
2

インデックスバッファではなく、であるとしますが、ではなく頂点バッファであるとします。DirectX:インデックスバッファをバインドして頂点バッファをバインドしないとどうなりますか?

存在しないインデックス(頂点バッファがないため)を含むこのインデックスバッファをバインドすると、それらの頂点が作成されるか、すべての無効なインデックスが無視されますか?

頂点シェーダでは、インデックス付き頂点のすべての位置を計算できるので、実際に画面上に何かが表示されます。

これは可能ですか?任意の頂点バッファ際限なくインデックスバッファを使用して描画を行う

+0

いくつかの頂点を放出する場合は、ジオメトリシェーダーを使用する必要があります。 – VTT

+0

問題は、その場所がシェーダーで上書きされても、頂点を生成する必要があるかどうかです。 – Shiro

+0

インデックス付き描画を実行すると、頂点とインデックスの両方がシェーダの* input *パラメータになります。 – VTT

答えて

3

が許可されていますが、その後、2つだけのセマンティクスは、お使いの頂点シェーダの入力として許可されています

SV_VertexIDとSV_InstanceID(SVセマンティクスhereを参照)

他の入力の値は0に設定されます

StructureBuffersを頂点バッファ(Compute Shaderで処理されている頂点)として使用することが多いケースが1つあります。ここ:

StructuredBuffer<float3> sbPosition : register(t0); 
void VS(uint iv : SV_VertexID, out float4 posScreen : SV_Position) 
{ 
    //Fetch vertex 
    float3 p = sbPosition[iv]; 

    posScreen = // mul p by world view projection 
} 

別の場合は、頂点IDで位置ベースを手続き的に生成することもできます。

一旦vetexシェーダが完了すると、頂点インデックスはインデックスバッファによって消費され、トポロジによって設定されたプリミティブを形成します)。

関連する問題