Шаг 29 - IDirect3DDevice8::CreateVertexBuffer

Создает буфер вершин.

HRESULT CreateVertexBuffer(
	UINT Length,
	DWORD Usage,
	DWORD FVF,
	D3DPOOL Pool,
	IDirect3DVertexBuffer8** ppVertexBuffer
);

Описание параметров

Length - размер буфера вершин, в байтах. Для гибкого формата вершин (FVF) размер должен быть достаточно большим, чтобы вместить хотя бы одну вершину. Length не утвержден для nonFVF буферов. См. Примечание ниже.

Usage - комбинация одного или нескольких флажков описывающих управление над этим ресурсом. Ниже они перечислены:

D3DUSAGE_DONOTCLIP - указывает на то, что буфер вершин никогда не будет требовать переключение. Когда Вам нужно будет отобразить содержимое буфера, установите флажок D3DRS_CLIPPING в false (ложь).

D3DUSAGE_DYNAMIC - указывает когда вершинам или буферу требует использование динамической памяти. Это разрешает драйверу самому решать куда разместить. Так, статический буфер вершин помещается в видео память, а динамический в AGP память. Если Вы не используете флажок D3DUSAGE_DYNAMIC, Вы тем самым назначаете использование статической памяти. D3DUSAGE_DYNAMIC строго прописывается через D3DLOCK_DISCARD и D3DLOCK_NOOVERWRITE. Флажки D3DLOCK_DISCARD и D3DLOCK_NOOVERWRITE влияют на вершины и буфер созданные при помощи D3DUSAGE_DYNAMIC; они не могут влиять на статический буфер вершин.

Для более подробной информации об использовании динамического буфера вершин см. Использование динамических вершин и индексация буферов.

Обратите внимание, что D3DUSAGE_DYNAMIC не может управлять вершинами и индексацией буферов. Для более полной информации см. Ресурсы управления.

D3DUSAGE_RTPATCHES - указывает, когда буфер вершин должен использовать прорисовку высококачественного примитива.

D3DUSAGE_NPATCHES - указывает, когда буфер вершин использует прорисовку N кусков.

D3DUSAGE_POINTS - указывает, когда буфер вершин использует прорисовку указателя на спрайт или список указателей.

D3DUSAGE_SOFTWAREPROCESSING - указывает, когда буфер вершин использует программную обработку вершин.

D3DUSAGE_WRITEONLY - сообщает системе, что пишет только буфер вершин. Использование этого флажка разрешает драйверу оптимизировать память для эффективной записи операций и визуализации. Пытается прочитать буфер вершин и затем создать.

FVF - представляет собой комбинацию флажков гибкого формата вершин (FVF), который описывает использование формата вершин в этом буфере. Когда этот параметр установлен, буфер вершин будет буфером вершин FVF (См. Примечание); в противном случае буфер будет как буфер non-FVF.

Pool - этот параметр входит в перечисляемый тип D3DPOOL, описывающий класс памяти для размещения.

ppVertexBuffer - содержит указатель на интерфейс IDirect3DVertexBuffer8, чтобы создать ресурс буфера вершин.

Возвращаемое значение

Если функция завершена успешно, тогда возвращается значение D3D_OK.

Если нет, то один из следующих флажков:

Примечание

Интерфейс IDirect3DDevice8 поддерживает визуализацию примитивов используя данные вершин объекта в буфере вершин. Буфер вершин создает интерфейс IDirect3DDevice8 и использовать его могут только объекты, которые были созданы при помощи IDirect3DDevice8.

Если Вы установите не нулевое значение в параметре FVF, то буфер будет создан с применением FVF. Буфер вершин, который создан с FVF, упоминается как буфер вершин формата FVF. Для более полной информации смотрите Буфер вершин формата FVF.

Флажок D3DUSAGE_SOFTWAREPROCESSING буфера вершин используют для программной обработки вершин. Для более полной информации смотрите Типы устройств и требования к обработке вершин.

Буфера Non-FVF могут чередовать данные во время мультипрохода визуализации или мультитекстурирования делая его за один проход. Чтобы это сделать, Вам нужен один буфер содержащий данные геометрии, а другой координаты текстуры для каждой текстуры, которая будет показана. При показе, буфер содержащий данные геометрии включает буфер содержащий координаты текстуры. Если бы использовался буфер FVF, то каждый из них должен был содержать идентичные данные геометрии с данными координатами текстуры к определенной текстуре, которая отображалась. В итоге, Вы получаете либо скорость, либо "поедание" памяти, в зависимости от используемого метода. Для более полной информации о координатах текстур, см. Координаты текстур.

Требования

Заголовки: объявить D3d8.h.

Подключить библиотеку: Используйте D3d8.lib.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Хавов Евгений Валерьевич - 22.08.2002