Я пытаюсь прояснить некоторые несоответствия, которые я вижу в направлении намотки вершин треугольной полосы (по часовой стрелке и против часовой стрелки). Я рисую трапецию, повернутую на 90 градусов против часовой стрелки в OpenGL. Вот соответствующий код:Ли направление намотки в треугольной полосе OpenGL чередуется от треугольника до треугольника?
unsigned char mIndices[] = { 0, 1, 2, 3, 4, 5 };
signed short mVertices[] = {
-50, 100, 0, // A
-85, 65, 0, // B
-50, 65, 0, // C
-85, -65, 0, // D
-50, -65, 0, // E
-50, -100, 0, // F
};
...
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_SHORT, 0, mVertices);
...
glDrawElements(GL_TRIANGLE_STRIP, sizeof(mVertices)/sizeof(mVertices[0]), GL_UNSIGNED_BYTE, mIndices);
Из того, что я прочитал here, по умолчанию передней стороны в OpenGL это против часовой стрелки, что означает, что первый треугольник в моей полосе должен иметь это вершину упорядоченной против часовой стрелки. Кроме того, при рисовании треугольной полосы обмотка переключает направления между против часовой стрелки и по часовой стрелке от треугольника до треугольника, поэтому мои вершины упорядочены таким образом. Поэтому из моего кода первым треугольником будет ABC, второй - BCD, третий CDE и четвертый DEF. Однако статья this (в цитате из Руководства по программированию OpenGL) говорит, что она будет рисовать их как ABC, CBD, CDE, EDF (при условии, что v0 - A, v1 - B и т. Д.), Что означает, что все они действуют одинаково против часовой стрелки направление.
Если я правильно понимаю A/B-нотацию из спецификации OpenGL, треугольники будут проходить в одном направлении, но я видел переменную обмотку в нескольких разных местах. Я предполагаю, что это просто проблема семантики, поскольку результирующая фигура такая же, но каков фактический порядок намотки?