OpenGL VAO, VBO эквивалент в DirectX11 - PullRequest
0 голосов
/ 15 ноября 2018

Я работаю над реализацией экземпляра DirectX11 для нашего игрового движка и являюсь новичком в программировании трехмерных игр.

Я немного знаю о графическом конвейере и шейдерах DirectX11 и о том, какие буферы вершин, схема ввода и т. Д.are.

Если посмотреть на один из API, код выглядит примерно так:

glBindVertexArray(current_vao);
glBindBuffer(GL_ARRAY_BUFFER, current_vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(Vector3) * Vertices.size(), &Vertices.front(), GL_DYNAMIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vector3), reinterpret_cast<void*>(0));
glDisableVertexAttribArray(1);
glDisableVertexAttribArray(2);
glDisableVertexAttribArray(3);
glDisableVertexAttribArray(4);
glDisableVertexAttribArray(5);
glDisableVertexAttribArray(6);
glBindBuffer(GL_ARRAY_BUFFER, 0);

Что это за эквивалент VAO и VBO в DirectX11?Что именно делает этот код?

1 Ответ

0 голосов
/ 15 ноября 2018

"VBO" - это просто буфер вершин, который в DirectX 11 представляет собой ID3D11Buffer с флагом связывания D3D11_BIND_VERTEX_BUFFER, который содержит данные вершин.

Прямого эквивалента OpenGL не существует"Массив атрибутов вершин".В DirectX 11 вы просто отправляете отдельную Draw для каждой группы настроек одинакового состояния (так называемый атрибут материала).

Если вы новичок в DirectX 11, вы можете рассмотреть возможность работы через [Учебные пособия по DirectX Tool Kit .

...