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


Ресурсы

Ресурс — это область памяти, которая может быть доступна конвейеру Direct3D. Чтобы конвейер получал доступ к памяти эффективным образом, данные, предоставляемые конвейеру (например, входные геометрические данные, ресурсы шейдеров и текстуры), должны храниться в ресурсах. Существуют два типа ресурсов, из которых образуются все ресурсы Direct3D: буфер и текстура. На каждом этапе конвейера может быть активно до 128 ресурсов.

Каждое приложение обычно создает много ресурсов. Примеры ресурсов: буферы вершин, буфер индекса, буфер констант, текстуры и ресурсы шейдера. Существует несколько вариантов, определяющих способ использования ресурсов. Можно создавать ресурсы, строго типизированные или типизированные меньше; вы можете контролировать, имеют ли ресурсы доступ на чтение и запись; ресурсы можно сделать доступными только для ЦП, GPU или обоих. Естественно, будет компромисс скорости и функциональности - чем больше функциональных возможностей вы позволяете ресурсу иметь, тем меньше производительности вы должны ожидать.

Так как приложение часто использует множество текстур, Direct3D также имеет концепцию массива текстур для упрощения управления текстурами. Массив текстур содержит одну или несколько текстур (все те же типы и измерения), которые можно индексировать из приложения или шейдеров. Массивы текстур позволяют использовать один интерфейс с несколькими индексами для доступа ко многим текстурам. Можно создать столько массивов текстур, сколько нужно для управления различными типами текстур.

После создания ресурсов, которые будет использоваться приложением, необходимо подключить или привязать каждый ресурс к этапам конвейера, которые будут использовать их. Это достигается путем вызова API привязки, который принимает указатель на ресурс. Так как для нескольких этапов конвейера может потребоваться доступ к одному ресурсу, Direct3D имеет концепцию представления ресурсов. Представление определяет часть ресурса, доступ к которому можно получить. Вы можете создать представления m или ресурс и привязать их к n этапам конвейера, если вы следуйте правилам привязки для общего ресурса (среда выполнения создаст ошибки во время компиляции, если вы этого не сделали).

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

В этом разделе

Раздел Описание

Типы ресурсов

Различные типы ресурсов имеют отдельный макет (или объем памяти). Все ресурсы, используемые конвейером Direct3D, являются производными от двух основных типов ресурсов: буферов и текстур. Буфер — это коллекция необработанных данных (элементов); Текстура — это коллекция текселей (элементов текстуры).

Выбор ресурса

Ресурс — это коллекция данных, используемых конвейером трехмерных данных. Создание ресурсов и определение их поведения является первым шагом к программированию приложения. В этом руководстве рассматриваются основные разделы по выбору ресурсов, необходимых приложению.

Копирование и доступ к данным ресурсов

Флаги использования указывают, как приложение намерено использовать данные ресурсов, чтобы разместить ресурсы в наиболее эффективной области памяти. Данные ресурсов копируются между ресурсами, чтобы ЦП или GPU могли получить доступ к нему, не влияя на производительность.

Представления текстур

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

 

Системы координат

Руководство по обучению графики Direct3D

Правила с плавающей запятой

Преобразование типов данных