Введение в программирование трехмерных игр с DX9



         

Создание буферов вершин и индексов



3.1.1. Создание буферов вершин и индексов

Для создания буферов вершин и индексов используются следующие два метода:

HRESULT IDirect3DDevice9::CreateVertexBuffer( UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle );

HRESULT IDirect3DDevice9::CreateIndexBuffer( UINT Length, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IDirect3DIndexBuffer9** ppIndexBuffer, HANDLE* pSharedHandle );

У обоих методов большая часть параметров идентична, так что рассмотрим параметры обоих методов вместе:

Length — Количество байт, выделяемых под буфер. Если нам требуется буфер достаточного размера для хранения восьми вершин, в этом параметре следует указать 8 * sizeof(Vertex), где Vertex — это ваша структура данных вершины.

Usage — Задает ряд дополнительных параметров, определяющих особенности использования буфера. Можно указать 0, если дополнительные параметры отсутствуют, или комбинацию из одного или нескольких следующих флагов:

D3DUSAGE_DYNAMIC — Флаг указывает, что данный буфер будет динамическим. Различия между статическими и динамическими буферами мы обсудим чуть позже.

D3DUSAGE_POINTS — Флаг указывает, что буфер будет использовваться для хранения примитивов точек. Примитивы точек рассматриваются в главе 14. Этот флаг может применяться только для буферов вершин.

D3DUSAGE_SOFTWAREPROCESSING — Обработка вершин будет выполняться программно.

D3DUSAGE_WRITEONLY — Указывает, что приложение может только записывать данные в буфер. Это позволяет драйверу разместить буфер в области памяти, обеспечивающей максимальную скорость записи. Обратите внимание, что попытка прочитать данные из буфера, созданного с указанием этого флага, приведет к ошибке.

FVF — Настраиваемый формат вершин, которые будут храниться в создаваемом буфере вершин.

Pool — Пул памяти, в котором будет размещен буфер.

ppVertexBuffer — Адрес ля возврата указателя на созданный буфер вершин.




Содержание  Назад  Вперед