До сих пор я использовал только glDrawArrays и хотел бы перейти к использованию индексного буфера и индексированных треугольников. Я рисую несколько сложный объект с текстурными координатами, нормалями и координатами вершин. Все эти данные собираются в единственном чередующемся буфере вершин и выводятся с использованием вызовов, аналогичных (при условии, что весь запрос выполняется правильно):
glVertexPointer( 3, GL_FLOAT, 22, (char*)m_vertexData );
glNormalPointer( GL_SHORT, 22, (char*)m_vertexData+(12) );
glTexCoordPointer( 2, GL_SHORT, 22, (char*)m_vertexData+(18) );
glDrawElements(GL_TRIANGLES, m_numTriangles, GL_UNSIGNED_SHORT, m_indexData );
Позволяет ли это чередовать m_indexData с индексами моих нормалей и координат текстуры, а также со стандартным массивом индексов положения? Или это предполагает один линейный список указателей, которые применяются ко всему формату вершин (POS, NOR, TEX)? Если последнее верно, как можно отобразить одну и ту же вершину с разными текстурными координатами или нормалями?
Полагаю, этот вопрос можно также перефразировать: если бы у меня было 3 отдельных индексированных списка (POS, NOR, TEX), где последние 2 нельзя переставить так, чтобы они разделяли тот же список индексов, что и первый, что является лучшим способом сделать это.