Поделиться через


Метод ID3D11Device::CreateBuffer (d3d11.h)

Создает буфер (буфер вершин, буфер индекса или буфер констант шейдера).

Синтаксис

HRESULT CreateBuffer(
  [in]            const D3D11_BUFFER_DESC      *pDesc,
  [in, optional]  const D3D11_SUBRESOURCE_DATA *pInitialData,
  [out, optional] ID3D11Buffer                 **ppBuffer
);

Параметры

[in] pDesc

Тип: const D3D11_BUFFER_DESC*

Указатель на структуру D3D11_BUFFER_DESC , описывающую буфер.

[in, optional] pInitialData

Тип: const D3D11_SUBRESOURCE_DATA*

Указатель на структуру D3D11_SUBRESOURCE_DATA , описывающую данные инициализации; используйте значение NULL только для выделения места (за исключением того, что он не может иметь значение NULL , если флаг использования D3D11_USAGE_IMMUTABLE).

Если ничего не передать в pInitialData, начальное содержимое памяти для буфера будет неопределенным. В этом случае необходимо записать содержимое буфера другим способом, прежде чем будет прочитан ресурс.

[out, optional] ppBuffer

Тип: ID3D11Buffer**

Адрес указателя на интерфейс ID3D11Buffer для созданного объекта буфера. Присвойте этому параметру значение NULL , чтобы проверить другие входные параметры (S_FALSE указывает на проход).

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

Тип: HRESULT

Этот метод возвращает E_OUTOFMEMORY , если недостаточно памяти для создания буфера. Другие возможные возвращаемые значения см. в разделе Коды возврата Direct3D 11 .

Комментарии

Пример кода см. в разделах Практическое руководство. Создание буфера вершин, Практическое руководство. Создание буфера индекса или Практическое руководство. Создание буфера констант.

Для буфера констант (bindFlagsD3D11_BUFFER_DESC задано значение D3D11_BIND_CONSTANT_BUFFER) необходимо задать значение ByteWidthD3D11_BUFFER_DESC в кратных 16 и меньше или равно D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT.

Среда выполнения Direct3D 11.1, которая доступна в операционных системах Windows 8 и более поздних версий, предоставляет следующие новые функции для CreateBuffer:

Вы можете создать буфер констант, который больше максимального размера буфера констант, к которому может получить доступ шейдер (4096 32-разрядных*4-компонентных констант — 64 КБ). При привязке буфера констант к конвейеру (например, с помощью PSSetConstantBuffers или PSSetConstantBuffers1) можно определить диапазон буфера, к которому может получить доступ шейдер, который соответствует пределу константы 4096.

Среда выполнения Direct3D 11.1 (доступна в Операционных системах Windows 8 и более поздних версий) эмулирует эту функцию для уровней компонентов 9.1, 9.2 и 9.3; Поэтому эта функция поддерживается для уровней компонентов 9.1, 9.2 и 9.3.

Эта функция всегда доступна в новых драйверах для уровня компонентов 10 и выше.

В средах выполнения старше Direct3D 11.1 сбой вызова CreateBuffer для запроса буфера констант, превышающего 4096.

Требования

   
Целевая платформа Windows
Header d3d11.h
Библиотека D3D11.lib

См. также раздел

ID3D11Device