Метод 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 |