Я пытаюсь нарисовать простой квадрат с помощью dx11, но порядок индексов каждого треугольника определяет, будет ли он отображаться. Я установил режим отключения в состояние растеризатора, но это ничего не меняет.
Если я укажу вершины первого треугольника равными 0, 1, 2 вместо 2, 1, 0, то треугольник не появится. Итак, мой вопрос: нужно ли упорядочивать вершины треугольника определенным образом, независимо от режима отбраковки?
Постскриптум Я рисую список треугольников, а не полосу.
UINT indices[] = {2, 1, 0,
1, 3, 0};MeshVertex vertices[] =
{
{ Vector3(1.0f, 1.0f, 0.0f)}, //Top Right
{ Vector3(-1.0f, -1.0f, 0.0f)}, //Bottom Left
{ Vector3(1.0f, -1.0f, 0.0f)}, //Bottom Right
{ Vector3(-1.0f, 1.0f, 0.0f)} //Top Left
};
mesh = new Mesh(vertices, indices, 4, 6, shader);
Итак, мой вопрос, нужно ли мне упорядочить вершины треугольника в
конкретный способ независимо от режима отбора?** Определите / Нарисуйте свои вершины в порядке по часовой стрелке, и не меняйте значение по умолчанию
режим отбраковки. **
Чтобы определить, можно ли отобразить треугольник, необходимо учитывать 2 фактора.
Вы можете установить переднюю грань и режим отбраковки в D3D11_RASTERIZER_DESC состав
Причина, по которой вы не видите различий при изменении режима отбраковки на NONE, заключается в том, что оба треугольника были в одном и том же порядке, и D3D11_CULL_NONE означает, что не отбраковывалось ни одной грани.
Если треугольник 1 расположен по часовой стрелке, а треугольник 2 — против часовой стрелки, вы увидите только один треугольник, если вы установите режим отбраковки на D3D11_CULL_FRONT или D3D11_CULL_BACK, и увидите оба, когда вы установите его на D3D11_CULL_NONE.