netlib.narod.ru | < Назад | Оглавление | Далее > |
После того, как мы создали наши буферы вершин и индексов и выполнили все подготовительные действия, можно рисовать наши фигуры, передавая данные об их геометрии в конвейер визуализации с помощью методов DrawPrimitive или DrawIndexedPrimitive. Эти методы получают информацию о вершинах из настроенного потока вершин и индексы из установленного в данный момент буфера индексов.
Данный метод используется для рисования примитивов не использующих индексы.
HRESULT IDirect3DDevice9::DrawPrimitive( D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount );
PrimitiveType — Тип рисуемого примитива. Помимо треугольников вы можете рисовать линии и точки. Поскольку мы используем треугольники, в данном параметре следует указать D3DPT_TRIANGLELIST.
StartVertex — Индекс элемента потока вершин с которого следует начать чтение данных вершин. Благодаря этому параметру мы можем рисовать только часть буфера вершин.
PrimitiveCount — Количество рисуемых примитивов.
А вот и пример использования метода:
// рисуем четыре треугольника _device->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 4);
Этот метод используется для рисования примитивов, использующих индексы.
HRESULT IDirect3DDevice9::DrawIndexedPrimitive( D3DPRIMITIVETYPE Type, INT BaseVertexIndex, UINT MinIndex, UINT NumVertices, UINT StartIndex, UINT PrimitiveCount );
Type — Тип рисуемого примитива. Помимо треугольников вы можете рисовать линии и точки. Поскольку мы используем треугольники, в данном параметре следует указать D3DPT_TRIANGLELIST.
BaseVertexIndex — Базисная величина, которая будет прибавлена к используемым в данном вызове индексам. Подробнее о ней говорится в находящемся после списка примечании.
MinIndex — Минимальное значение индекса, которое будет использовано.
NumVertices — Количество вершин, которые будут обработаны данным вызовом.
StartIndex — Номер элемента буфера индексов, который будет отмечен как стартовая точка с которой начнется чтение индексов.
PrimitiveCount — Количество рисуемых примитивов.
Пример использования метода:
_device->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 8, 0, 12);
Рис. 3.2. Объединение раздельно объявленных буферов вершин в один общий буфер вершин |
И последний фрагмент информации: помните, что все вызовы методов рисования должны находиться внутри пары вызовов IDirect3DDevice9::BeginScene и IDirect3DDevice9::EndScene. К примеру, следует писать:
_device->BeginScene(); _device->DrawPrimitive(...); _device->EndScene();
netlib.narod.ru | < Назад | Оглавление | Далее > |