Ресурсы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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