Есть ли в D3D11 эквивалент OpenGL glVertexAttrib ()?

Я хотел бы иметь возможность установить постоянное значение для одного из атрибутов вершины в D3D11.

Что будет эквивалентно следующему коду в D3D11?

glVertexAttribPointer(pos, &pos[0], ...);
glEnableVertexAttribArray(pos);

glVertexAttribPointer(color, NULL, ...);
glDisableVertexAttribArray(color);

glVertexAttrib4fv(color, &defaultColor);

glDrawArrays(...);

2

Решение

При создании входного макета для Input Assembler вы можете указать, предоставляется ли атрибут для каждой вершины или для каждого экземпляра:

typedef enum D3D11_INPUT_CLASSIFICATION {
D3D11_INPUT_PER_VERTEX_DATA    = 0,
D3D11_INPUT_PER_INSTANCE_DATA  = 1
} D3D11_INPUT_CLASSIFICATION;

Вы можете предоставить цвет, который является постоянным для всех вершин в каждом конкретном случае.

1

Другие решения

Использование glVertexAttrib4fv с glDrawArrays означает, что константа одинакова для всех вершин в чертеже.

Урок 7 «Отображение текстур и постоянные буферы» в DirectX SDK (июнь 2010) описывает общий метод передачи констант в шейдер.

0

По вопросам рекламы [email protected]