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


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

Создайте представление шейдер-ресурс для доступа к данным в ресурсе.

Синтаксис

HRESULT CreateShaderResourceView(
  [in]            ID3D11Resource                        *pResource,
  [in, optional]  const D3D11_SHADER_RESOURCE_VIEW_DESC *pDesc,
  [out, optional] ID3D11ShaderResourceView              **ppSRView
);

Параметры

[in] pResource

Тип: ID3D11Resource*

Указатель на ресурс, который будет использоваться в качестве входных данных для шейдера. Этот ресурс должен быть создан с флагом D3D11_BIND_SHADER_RESOURCE .

[in, optional] pDesc

Тип: const D3D11_SHADER_RESOURCE_VIEW_DESC*

Указатель на описание представления шейдер-ресурсов (см . D3D11_SHADER_RESOURCE_VIEW_DESC). Присвойте этому параметру значение NULL , чтобы создать представление, которое обращается ко всему ресурсу (в формате, в который был создан ресурс).

[out, optional] ppSRView

Тип: ID3D11ShaderResourceView**

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

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

Тип: HRESULT

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

Комментарии

Ресурс состоит из одного или нескольких подресурсов; представление определяет, к каким подресурсам следует разрешить доступ конвейеру. Кроме того, каждый ресурс привязан к конвейеру с помощью представления. Представление шейдер-ресурса предназначено для привязки любого ресурса буфера или текстуры к этапам шейдера с помощью следующих методов API: ID3D11DeviceContext::VSSetShaderResources, ID3D11DeviceContext::GSSetShaderResources и ID3D11DeviceContext::P SSetShaderResources.

Так как представление является полностью типизированным, это означает, что бестипные ресурсы становятся полностью типизированными при привязке к конвейеру.

Примечание Чтобы успешно создать представление шейдер-ресурс из буфера без типов (например, DXGI_FORMAT_R32G32B32A32_TYPELESS), необходимо установить флаг D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS при создании буфера.
 
Среда выполнения Direct3D 11.1, которая доступна начиная с Windows 8, позволяет использовать CreateShaderResourceView для следующей новой цели.

Вы можете создавать представления шейдер-ресурсов для видеоресурсов, чтобы шейдеры Direct3D могли обрабатывать эти представления ресурсов шейдеров. Это либо Texture2D, либо Texture2DArray. Значение элемента ViewDimension структуры D3D11_SHADER_RESOURCE_VIEW_DESC для созданного представления шейдер-ресурса должно соответствовать типу видеоресурса, D3D11_SRV_DIMENSION_TEXTURE2D для Texture2D и D3D11_SRV_DIMENSION_TEXTURE2DARRAY для Texture2DArray. Кроме того, формат базового видеоресурса ограничивает форматы, которые может использовать представление. Значения формата видеоресурсов на странице справочника по DXGI_FORMAT указывают значения формата, которыми ограничены представления.

Логика предотвращения конфликтов чтения и записи во время выполнения (которая предотвращает привязку ресурса как SRV, RTV или UAV одновременно) рассматривает представления различных частей одной и той же области видео как конфликтующие для простоты. Таким образом, среда выполнения не позволяет приложению считывать данные из luma, в то время как приложение одновременно отрисовывается в хрома в одной и той же поверхности, даже если оборудование может разрешить эти одновременные операции.

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

Требования

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

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

ID3D11Device