Предположим, я хочу отобразить пирамиду в Direct3D. У меня есть следующие вершины в моем вершинном буфере:
Vertex vertices[] = {
{XMFLOAT3(+1.0f,0.0f,+1.0f),(const float*)&Colors::Green},
{XMFLOAT3(+1.0f,0.0f,-1.0f),(const float*)&Colors::Green},
{XMFLOAT3(-1.0f,0.0f,-1.0f),(const float*)&Colors::Green},
{XMFLOAT3(-1.0f,0.0f,+1.0f),(const float*)&Colors::Green},
{XMFLOAT3(0.0f,1.5f,0.0f),(const float*)&Colors::Blue}
}
Где Vertex - простая struct
с позицией и значением цвета.
Теперь в моем буфере индекса, каков правильный порядок, чтобы указать эти вершины, чтобы нарисовать пирамиду, чтобы все ее треугольники были перед собой? Всякий раз, когда я пытаюсь сделать то, что кажется логичным для меня, я получаю некоторые треугольники, обращенные к неправильному пути.
Как обычно я это делал:
В качестве альтернативы:
Разумеется, ваш рендерер и, особенно, вводный примитивный тип ассемблера (например, треугольный список или треугольная полоска) и отбраковка должны быть правильно настроены для правильной рисования модели.
Надеюсь, поможет!