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


Метод 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, поддерживаемых оборудованием.

Windows Phone 8. Этот API поддерживается.

Требования

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

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

ID3D11Device