- Часть первая, первый квадрат
- Часть вторая, добавляем атрибуты
- Часть третья, индексный буфер
- Часть четвертая, динамика
- Часть пятая, дополнительные возможности
- Часть шестая, VAO
- Ссылки по теме
В предыдущих уроках мы для рисования одного четырехугольника использовали 6 вершин, 2 из которых дублировались. Причиной этого было использования для рисования команды glDrawArrays, которая в качестве параметра может принимать только массив вершин, и при выводе считает что идущие друг за другом три вершины формируют треугольник, и изменить этот порядок никак нельзя. Естественно, если вы будете использовать в качестве типа грани GL_QUADS, то один квадрат будет формироваться из 4-х вершин, а в случае GL_TRIANGLE_STRIP – каждая вершина, после первых двух, будет добавлять новый треугольник.
Но данный подход не выгоден по двум причинам – во-первых это
перерасход памяти на дублирующиеся вершины, во-вторых – все трансформации в GPU рассчитываются
для каждой вершины, в том числе и дублирующейся. В третьих в современных
видеокартах есть так называемый Pre-/Post- TnL Cache, суть которого в
экономии GPU времени на расчет дублирующихся вершин. Эти проблемы
решаются за счет использования так называемого индексного буфера, а технологию
иногда называют IBO.