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


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

Создание геометрического шейдера.

Синтаксис

HRESULT CreateGeometryShader(
  [in]            const void           *pShaderBytecode,
  [in]            SIZE_T               BytecodeLength,
  [in, optional]  ID3D11ClassLinkage   *pClassLinkage,
  [out, optional] ID3D11GeometryShader **ppGeometryShader
);

Параметры

[in] pShaderBytecode

Тип: const void*

Указатель на скомпилированный шейдер.

[in] BytecodeLength

Тип: SIZE_T

Размер скомпилированного геометрического шейдера.

[in, optional] pClassLinkage

Тип: ID3D11ClassLinkage*

Указатель на интерфейс компоновки класса (см . ID3D11ClassLinkage); значение может иметь значение NULL.

[out, optional] ppGeometryShader

Тип: ID3D11GeometryShader**

Адрес указателя на интерфейс ID3D11GeometryShader . Если значение равно NULL, будут проверены все остальные параметры, а если все параметры проходят проверку, этот API вернет S_FALSE вместо S_OK.

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

Тип: HRESULT

Этот метод возвращает один из следующих кодов возврата Direct3D 11.

Комментарии

После создания шейдер можно задать для устройства, вызвав ID3D11DeviceContext::GSSetShader.

Среда выполнения Direct3D 11.1, доступная начиная с Windows 8, предоставляет следующие новые функции для CreateGeometryShader.

Следующие инструкции по модели шейдера 5.0 доступны только для шейдеров текстуры и вычислительных шейдеров в среде выполнения Direct3D 11.0. Для среды выполнения Direct3D 11.1, так как неупорядоченные представления доступа (UAV) доступны на всех этапах шейдера, эти инструкции можно использовать на всех этапах шейдера.

Таким образом, если вы используете следующие инструкции модели шейдера 5.0 в геометрическом шейдере, можно успешно передать скомпилированный геометрический шейдер в pShaderBytecode. То есть вызов CreateGeometryShader завершается успешно.

При передаче скомпилированного шейдера в pShaderBytecode , использующего любую из следующих инструкций, на устройстве, которое не поддерживает БПЛА на каждом этапе шейдера (включая существующие драйверы, которые не реализованы для поддержки БПЛА на каждом этапе шейдера), createGeometryShader завершается сбоем. CreateGeometryShader также завершается сбоем, если шейдер пытается использовать слот UAV за пределами набора слотов UAV, поддерживаемых оборудованием.

Примеры

Пример использования


ID3D11GeometryShader*       g_pGeometryShader11 = NULL;
ID3DBlob* pGeometryShaderBuffer = NULL;
ID3DBlob * errorbuffer = NULL;

D3DX11CompileFromFile( str, NULL, NULL, "GS", "gs_4_0", dwShaderFlags, 0, NULL,
                                         &pGeometryShaderBuffer, &errorbuffer, NULL );

pd3dDevice->CreateGeometryShader( pGeometryShaderBuffer->GetBufferPointer(),
               pGeometryShaderBuffer->GetBufferSize(), NULL, &g_pGeometryShader11 );
     
          

Требования

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

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

ID3D11Device