Mikle » 06.02.2005 (Вс) 10:47
В SDK заполняется ИБ для TriangleList, а у меня для TriangleStrip, отсюда разница.
Представь, что нужно отобразить рег. сетку 32*32 ячейки, то есть 32*32*2 треугольника.
Если отображать TriangleList ВБ - нужно 32*32*2*3 вертекса.
Если 32 TriangleStrip-а - нужно 32*(32+1)*2 вертекса.
Чувствуешь избыток? ведь у нас (32+1)*(32+1) узловый вертексов. ИБ содержит НОМЕРА (или индексы) вертексов в ВБ. То есть:
Если отображать TriangleList ВБ+ИБ - нужно 32*32*2*3 ИНДЕКСОВ + (32+1)*(32+1) вертексов.
Если отображать TriangleStrip ВБ+ИБ - нужно 32*(32+1)*2 ИНДЕКСОВ + (32+1)*(32+1) вертексов.
Размер индекса - 2 или 4 байта (Index_16 или Index_32) против, например, 36 байт для вертекса при VertexFormat=Position+Diffuse+Normal+tu+tv.
Посчитай объем занимаемой памяти в каждом случае - поймешь, зачем нужны ИБ. Кроме того ИБ позволяет не просчитывать один вертекс несколько раз, при повторном обращении.