Представления текстур (Direct3D 10)

В Direct3D 10 доступ к ресурсам текстур осуществляется с помощью представления, которое представляет собой механизм для аппаратной интерпретации ресурса в памяти. Представление позволяет определенному циклу конвейера получать доступ только к необходимым ему вложенным ресурсам в виде, требуемом для приложения.

Представление поддерживает понятие ресурса без типа. Ресурс без типа — это ресурс, созданный с определенным размером, но не с определенным типом данных. Данные интерпретируется динамически при привязке к конвейеру.

Ниже представлен пример привязки массива двухмерных текстур с шестью текстурами в качестве ресурса шейдера путем создания для него представления ресурса шейдера. Затем обращение к ресурсу происходит как к массиву текстур. (Примечание. Вложенный ресурс невозможно одновременно привязать к конвейеру в качестве ввода и вывода.)

Иллюстрация массива текстур с шестью текстурами

При использовании массива двухмерных текстур в качестве цели отрисовки ресурс можно рассматривать как массив двухмерных текстур (в этом примере их 6) с об уровнями MIP (в этом примере их 3).

Создайте объект представления для целевого объекта отрисовки, вызвав метод CreateRenderTargetView. Затем вызовите OMSetRenderTargets, чтобы установить представление однобуферной отрисовки для конвейера. Вызовите Draw для отрисовки на целевых объектах и используйте RenderTargetArrayIndex для указания правильной текстуры в массиве. Можно использовать вложенный ресурс (уровень MIP-карты, комбинацию индекса массива) для привязки к любому массиву подчиненных ресурсов. При необходимости можно выполнить привязку ко второму уровню MIP-карты и обновить только этот уровень, как показано на следующем рисунке.

Иллюстрация привязки только ко второму уровню MIP-карты массива текстур

Различия между Direct3D 9 и Direct3D 10:

  • В Direct3D 10 вы больше не привязываете ресурс непосредственно к конвейеру, а создаете представление ресурса, а затем задаете представление для конвейера. Это позволяет выполнять проверку и сопоставление в среде выполнения и драйвере при создании представления, сводя к минимуму проверку типов во время привязки.

 

Ресурсы (Direct3D 10)