モデルを持っているとしましょう。このモデルには、位置、色、法線、および2つのテクスチャ座標のデータがあります。ここで、入力タイプが位置と色のみであるシェーダーがあるとします。ただし、このモデルの頂点バッファは次の形式です。
struct Vertex_PCNT2
{
D3DXVECTOR3 position;
D3DXVECTOR4 color;
D3DXVECTOR3 normal;
D3DXVECTOR2 tex1;
D3DXVECTOR2 tex2;
};
このモデルには、位置と色を取得するシェーダーの情報が含まれていますが、余分なデータがあるため、使用できません。私が考えることができる他の唯一の解決策は、同じ情報からいくつかのフィールドを除いた複数の頂点バッファを持つことですが、それは単に冗長です。真剣にもっと良い方法がなければなりません。ここで何か助けはありますか?
編集:仕事の前に少し時間をかけて質問を詳しく説明すると思いました。頂点バッファーについて話すとき、私はID3D11Device::CreateBufferで作成するID3D11Buffer*を意味します。手前に、Vertex_PCNT2と入力して頂点の配列を埋めます。この時点で私が言えることから、そのバッファーは永続的にこの形式になっているため、すべてのシェーダーがこの形式で動作する必要があります。データがすでに存在する場合、他のバッファを設定することはRAMに負担をかけるだけです。