До сих пор я использовал только 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 нельзя переставить, чтобы использовать тот же список индексов, что и первый, как лучше всего это сделать.