Допустим, у меня есть модель. Эта модель имеет данные о положении, цвете, нормалях и двух координатах текстуры. Теперь предположим, что у меня есть шейдер, который вводит только положение и цвет. Однако буфер вершин этой модели имеет формат:
struct Vertex_PCNT2
{
D3DXVECTOR3 position;
D3DXVECTOR4 color;
D3DXVECTOR3 normal;
D3DXVECTOR2 tex1;
D3DXVECTOR2 tex2;
};
Несмотря на то, что в этой модели есть информация для шейдера, который принимает позицию и цвет, я не могу ее использовать, потому что есть лишние данные. Единственное другое решение, которое я могу придумать, - это иметь несколько буферов вершин с одинаковой информацией за вычетом пары полей, но это просто избыточно. Серьезно, должен быть лучший способ. Любая помощь здесь?
edit: Решил немного уточнить свой вопрос за некоторое время до работы. Говоря о буфере вершин, я имею в виду ID3D11Buffer *, который вы создаете с помощью ID3D11Device::CreateBuffer. Перед этим я заполнил массив вершин типом Vertex_PCNT2. Из того, что я могу сказать на данный момент, этот буфер теперь постоянно находится в этом формате, поэтому все шейдеры должны работать с этим форматом. Настройка других буферов будет просто нагрузкой на оперативную память, когда данные уже существуют.