Как работают параметры сдвига в DrawUserIndexedPrimitives в XNA?

В игре XNA создаю массив VertexPositionNormalTexture[8] и описываю там два прямоугольника, по 4 вершины на каждый. Создаю массив индексов int[12] и описываю 4 треугольника, на каждый по 3 индекса. Вот такой код при отрисовке

 device.DrawUserIndexedPrimitives<VertexPositionNormalTexture>(PrimitiveType.TriangleList,
                vertices, 0,
                vertices.Length
            , indices,
            0,
            indices.Length / 3
            );

рисует два прямоугольника как и положено. Но когда я пытаюсь прямоугольники отрисовать двумя вызовами, получается странность. Вот так нормально рисуется первый прямоугольник:

 device.DrawUserIndexedPrimitives<VertexPositionNormalTexture>(PrimitiveType.TriangleList,
                vertices, 0,
                4
            , indices,
            0,
            2
            );

А вот так второй не рисуется:

 device.DrawUserIndexedPrimitives<VertexPositionNormalTexture>(PrimitiveType.TriangleList,
                vertices, 4,//сдвиг от начала в массиве вершин
                4
            , indices,
            6,//сдвиг от начала в массиве индексов
            2
            );

Здесь рисуем начиная от 4 вершины и от 6 индекса, но не отображается. Зато рисуется вот так:

 device.DrawUserIndexedPrimitives<VertexPositionNormalTexture>(PrimitiveType.TriangleList,
                vertices, 4,
                4
            , indices,
            0,
            2
            );

Здесь рисуем начиная от 4 вершины но почему-то отображается если в массиве индексов рисуем от нуля. Непонятно, для чего нужен параметр indexOffset, если все равно рисуется, только если сдвиг индексов всегда на нуле.


Ответы (0 шт):