Метод ID3D11Device::CreateGeometryShaderWithStreamOutput (d3d11.h)
Создает геометрический шейдер, который может выполнять запись в буферы вывода потоковой передачи.
Синтаксис
HRESULT CreateGeometryShaderWithStreamOutput(
[in] const void *pShaderBytecode,
[in] SIZE_T BytecodeLength,
[in, optional] const D3D11_SO_DECLARATION_ENTRY *pSODeclaration,
[in] UINT NumEntries,
[in, optional] const UINT *pBufferStrides,
[in] UINT NumStrides,
[in] UINT RasterizedStream,
[in, optional] ID3D11ClassLinkage *pClassLinkage,
[out, optional] ID3D11GeometryShader **ppGeometryShader
);
Параметры
[in] pShaderBytecode
Тип: const void*
Указатель на скомпилированный геометрический шейдер для стандартного геометрического шейдера и потокового вывода. Сведения о том, как получить этот указатель, см. в разделе Получение указателя на скомпилированный шейдер.
Чтобы создать потоковый вывод без использования геометрического шейдера, передайте указатель на сигнатуру вывода для предыдущего этапа. Чтобы получить эту сигнатуру выходных данных, вызовите функцию компилятора D3DGetOutputSignatureBlob . Можно также передать указатель на скомпилированный шейдер для предыдущего этапа (например, этапа вершинного шейдера или этапа доменного шейдера). Этот скомпилированный шейдер предоставляет выходную сигнатуру для данных.
[in] BytecodeLength
Тип: SIZE_T
Размер скомпилированного геометрического шейдера.
[in, optional] pSODeclaration
Тип: const D3D11_SO_DECLARATION_ENTRY*
Указатель на массив D3D11_SO_DECLARATION_ENTRY . Не может иметь значение NULL , если NumEntries > 0.
[in] NumEntries
Тип: UINT
Количество записей в объявлении вывода потока ( в диапазоне от 0 до D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT ).
[in, optional] pBufferStrides
Тип: const UINT*
Массив буферных шагов; каждый шаг — это размер элемента для этого буфера.
[in] NumStrides
Тип: UINT
Количество шагов (или буферов) в pBufferStrides (в диапазоне от 0 до D3D11_SO_BUFFER_SLOT_COUNT).
[in] RasterizedStream
Тип: UINT
Номер индекса потока, отправляемого на этап растеризатора (в диапазоне от 0 до D3D11_SO_STREAM_COUNT –1). Задайте значение D3D11_SO_NO_RASTERIZED_STREAM, если поток не должен быть растеризован.
[in, optional] pClassLinkage
Тип: ID3D11ClassLinkage*
Указатель на интерфейс компоновки класса (см . ID3D11ClassLinkage); значение может иметь значение NULL.
[out, optional] ppGeometryShader
Тип: ID3D11GeometryShader**
Адрес указателя на интерфейс ID3D11GeometryShader , представляющий созданный геометрический шейдер. Присвойте этому параметру значение NULL , чтобы проверить другие параметры; Если проверка пройдена, метод вернет S_FALSE вместо S_OK.
Возвращаемое значение
Тип: HRESULT
Этот метод возвращает один из кодов возврата Direct3D 11.
Комментарии
Дополнительные сведения об использовании CreateGeometryShaderWithStreamOutput см. в разделе Создание объекта Geometry-Shader с Stream выходными данными.
Среда выполнения Direct3D 11.1, доступная начиная с Windows 8, предоставляет следующие новые функции для CreateGeometryShaderWithStreamOutput.
Следующие инструкции по модели шейдера 5.0 доступны только для шейдеров текстуры и вычислительных шейдеров в среде выполнения Direct3D 11.0. Для среды выполнения Direct3D 11.1, так как неупорядоченные представления доступа (UAV) доступны на всех этапах шейдера, эти инструкции можно использовать на всех этапах шейдера.
Таким образом, если вы используете следующие инструкции модели шейдера 5.0 в геометрическом шейдере, можно успешно передать скомпилированный геометрический шейдер в pShaderBytecode. То есть вызов CreateGeometryShaderWithStreamOutput завершается успешно.
Если вы передаете скомпилированный шейдер в pShaderBytecode , который использует любую из следующих инструкций на устройстве, которое не поддерживает БПЛА на каждом этапе шейдера (включая существующие драйверы, которые не реализованы для поддержки БПЛА на каждом этапе шейдера), createGeometryShaderWithStreamOutput завершается ошибкой . CreateGeometryShaderWithStreamOutput также завершается ошибкой, если шейдер пытается использовать слот UAV за пределами набора слотов UAV, поддерживаемых оборудованием.
- dcl_uav_typed
- dcl_uav_raw
- dcl_uav_structured
- ld_raw
- ld_structured
- ld_uav_typed
- store_raw
- store_structured
- store_uav_typed
- sync_uglobal
- Все атомарные и непосредственные атомары (например, atomic_and и imm_atomic_and)
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | d3d11.h |
Библиотека | D3D11.lib |