Если у меня есть массив вершин, как я могу отсортировать их таким образом, чтобы было удобно проходить и рисовать треугольную полосу? - PullRequest
1 голос
/ 16 августа 2010

Я начал изучать чтение данных, упакованных в файл Collada (.dae). Я дошел до того, что у меня есть вершины конкретной сетки. Прямо сейчас я просто перебираю их между вызовами glBegin и glEnd, и я заметил, что не все лица рендерились. Я думаю, что это может быть потому, что вершины не в правильном порядке, чтобы сформировать правильную полосу треугольника. Я понял, что, возможно, этот вопрос должен быть направлен на экспортер .dae блендера, так как это то, что я использую.

Это точный код, который я использую:

//Vertices is a vector of vertices that I pulled from the collada file.

glBegin(GL_TRIANGLE_STRIP);
for(int i = 0; i != Vertices.size(); i++)
{
    glVertex3f(Vertices[i]->x, Vertices[i]->y, Vertices[i]->z);
}
glEnd();

Модель, которую я пытаюсь загрузить, - это простая плоскость. Вот содержимое вершин:

1: 1, 1, 0
2: 1, -1, 0
3: -1, -1, 0
4: -1, 1, 0

1 Ответ

0 голосов
/ 17 августа 2010

Вы правы, это неправильная полоса треугольника, если вы хотите нарисовать простую плоскость.

Вы должны нарисовать свои вершины в следующих порядках:

1: 1, 1, 0
2: 1, -1, 0
4: -1, 1, 0
3: -1, -1, 0

То, что вы рисуете, таково:

    4      1 
    |\    /|
    | \  / |
    |  \/  |
    |  /\  |
    | /  \ |
    |/____\|
    3      2

Похоже проблема в экспортере ..

...