Метод IDirect3DDevice9::CreateVertexBuffer (d3d9helper.h)
Создает буфер вершин.
Синтаксис
HRESULT CreateVertexBuffer(
[in] UINT Length,
[in] DWORD Usage,
[in] DWORD FVF,
[in] D3DPOOL Pool,
[out, retval] IDirect3DVertexBuffer9 **ppVertexBuffer,
[in] HANDLE *pSharedHandle
);
Параметры
[in] Length
Тип: UINT
Размер буфера вершин в байтах. Для буферов вершин FVF длина должна быть достаточно большой, чтобы содержать по крайней мере одну вершину, но она не должна быть кратной размеру вершины. Длина не проверяется для буферов, не относящихся к FVF. См. заметки.
[in] Usage
Тип: DWORD
Использование может иметь значение 0, что указывает на отсутствие значения использования. Однако если требуется использование, используйте сочетание одной или нескольких констант D3DUSAGE . Рекомендуется сопоставлять параметр использования в CreateVertexBuffer с флагами поведения в IDirect3D9::CreateDevice. Дополнительные сведения см. в подразделе "Примечания".
[in] FVF
Тип: DWORD
Сочетание D3DFVF, описателя использования, описывающего формат вершин в этом буфере. Если для этого параметра задан допустимый код FVF, созданный буфер вершин является буфером вершин FVF (см. примечания). В противном случае, если для этого параметра задано значение 0, буфер вершин является буфером вершин без FVF.
[in] Pool
Тип: D3DPOOL
Член D3DPOOL перечислимого типа, описывающий допустимый класс памяти, в который помещется ресурс. Не устанавливайте значение D3DPOOL_SCRATCH.
[out, retval] ppVertexBuffer
Тип: IDirect3DVertexBuffer9**
Адрес указателя на интерфейс IDirect3DVertexBuffer9 , представляющий созданный ресурс буфера вершин.
[in] pSharedHandle
Тип: HANDLE*
Зарезервировано. Задайте для этого параметра значение NULL. Этот параметр можно использовать в Direct3D 9 для Windows Vista для совместного использования ресурсов.
Возвращаемое значение
Тип: HRESULT
Если метод выполнен успешно, возвращаемое значение будет D3D_OK. Если метод завершается ошибкой, возвращаемое значение может быть одним из следующих: D3DERR_INVALIDCALL, D3DERR_OUTOFVIDEOMEMORY E_OUTOFMEMORY.
Комментарии
Буфер вершин можно использовать с аппаратной или программной обработкой вершин. Это определяется способом создания устройства и буфера вершин.
При создании устройства CreateDevice использует флаг поведения, чтобы определить, следует ли обрабатывать вершины в оборудовании или программном обеспечении. Существует три варианта:
- Обработайте вершины на оборудовании, задав D3DCREATE_HARDWARE_VERTEXPROCESSING.
- Обработайте вершины в программном обеспечении, задав D3DCREATE_SOFTWARE_VERTEXPROCESSING.
- Обработайте вершины в оборудовании или программном обеспечении, задав D3DCREATE_MIXED_VERTEXPROCESSING.
При создании буфера вершин CreateVertexBuffer использует параметр usage, чтобы решить, следует ли обрабатывать вершины в аппаратном или программном обеспечении.
- Если CreateDevice использует D3DCREATE_HARDWARE_VERTEXPROCESSING, CreateVertexBuffer должен использовать 0.
- Если CreateDevice использует D3DCREATE_SOFTWARE_VERTEXPROCESSING, CreateVertexBuffer должен использовать значение 0 или D3DUSAGE_SOFTWAREPROCESSING. Для любого из значений вершины будут обрабатываться в программном обеспечении.
- Если CreateDevice использует D3DCREATE_MIXED_VERTEXPROCESSING, CreateVertexBuffer может использовать значение 0 или D3DUSAGE_SOFTWAREPROCESSING.
Интерфейс IDirect3DDevice9 поддерживает отрисовку примитивов с использованием данных вершин, хранящихся в объектах буфера вершин. Буферы вершин создаются из IDirect3DDevice9 и доступны только для объекта IDirect3DDevice9, из которого они созданы.
Если задано ненулевое значение, которое должно быть допустимым кодом FVF, параметр FVF указывает, что содержимое буфера должно быть охарактеризовано кодом FVF. Буфер вершин, созданный с помощью кода FVF, называется буфером вершин FVF. Дополнительные сведения см. в разделе Буферы вершин FVF (Direct3D 9).
Буферы, не относящиеся к FVF, можно использовать для чередовки данных во время отрисовки с несколькими проходами или многотекстовой отрисовки за один проход. Для этого один буфер содержит геометрические данные, а другие — координаты текстуры для каждой отрисовки. При отрисовке буфер, содержащий геометрические данные, чередуется с каждым буфером, содержащим координаты текстуры. Если бы вместо этого использовались буферы FVF, каждый из них должен содержать идентичные геометрические данные в дополнение к данным координат текстуры, характерным для каждой отрисовки текстуры. Это приведет к превышению скорости или нехватке памяти в зависимости от используемой стратегии. Дополнительные сведения о координатах текстуры см. в разделе Координаты текстуры (Direct3D 9).
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | d3d9helper.h (включая D3D9.h) |
Библиотека | D3D9.lib |
См. также раздел
IDirect3DDevice9::P rocessVertices