Я хотел бы иметь возможность установить постоянное значение для одного из атрибутов вершины в D3D11.
Что будет эквивалентно следующему коду в D3D11?
glVertexAttribPointer(pos, &pos[0], ...);
glEnableVertexAttribArray(pos);
glVertexAttribPointer(color, NULL, ...);
glDisableVertexAttribArray(color);
glVertexAttrib4fv(color, &defaultColor);
glDrawArrays(...);
При создании входного макета для Input Assembler вы можете указать, предоставляется ли атрибут для каждой вершины или для каждого экземпляра:
typedef enum D3D11_INPUT_CLASSIFICATION {
D3D11_INPUT_PER_VERTEX_DATA = 0,
D3D11_INPUT_PER_INSTANCE_DATA = 1
} D3D11_INPUT_CLASSIFICATION;
Вы можете предоставить цвет, который является постоянным для всех вершин в каждом конкретном случае.
Использование glVertexAttrib4fv с glDrawArrays означает, что константа одинакова для всех вершин в чертеже.
Урок 7 «Отображение текстур и постоянные буферы» в DirectX SDK (июнь 2010) описывает общий метод передачи констант в шейдер.