перечисление D3D10_USAGE (d3d10.h)
Определяет ожидаемое использование ресурсов во время отрисовки. Использование напрямую отражает, доступен ли ресурс для ЦП и (или) GPU.
Синтаксис
typedef enum D3D10_USAGE {
D3D10_USAGE_DEFAULT = 0,
D3D10_USAGE_IMMUTABLE = 1,
D3D10_USAGE_DYNAMIC = 2,
D3D10_USAGE_STAGING = 3
} ;
Константы
D3D10_USAGE_DEFAULT Значение: 0 Ресурс, требующий доступа gpu для чтения и записи. Это, скорее всего, самый распространенный вариант использования. |
D3D10_USAGE_IMMUTABLE Значение: 1 Ресурс, который может быть прочитан только GPU. Он не может быть записан GPU и недоступен для ЦП. Этот тип ресурса необходимо инициализировать при создании, так как его нельзя изменить после создания. |
D3D10_USAGE_DYNAMIC Значение: 2 Ресурс, доступный как GPU, так и ЦП (только для записи). Динамический ресурс является хорошим выбором для ресурса, который будет обновляться ЦП по крайней мере один раз на кадр. Для записи в динамический ресурс на ЦП используйте метод Map . Вы можете выполнять запись в динамический ресурс на GPU с помощью CopyResource или CopySubresourceRegion. |
D3D10_USAGE_STAGING Значение: 3 Ресурс, поддерживающий передачу данных (копирование) из GPU в ЦП. |
Комментарии
Приложение определяет способ использования ресурса (его использование) в описании ресурса. Существует несколько структур для создания ресурсов, включая D3D10_TEXTURE1D_DESC, D3D10_TEXTURE2D_DESC, D3D10_TEXTURE3D_DESC, D3D10_BUFFER_DESC и D3DX10_IMAGE_LOAD_INFO.
Различия между Direct3D 9 и Direct3D 10: В Direct3D 9 указывается тип памяти, в которую должен быть создан ресурс во время создания ресурса (с помощью D3DPOOL). Задача приложения заключалась в том, чтобы решить, какой пул памяти обеспечит наилучшее сочетание функциональных возможностей и производительности. В Direct3D 10 приложение больше не указывает тип памяти (пул) для создания ресурса. Вместо этого вы указываете предполагаемое использование ресурса и позволяете среде выполнения (в согласовании с драйвером и диспетчером памяти) выбрать тип памяти, который обеспечит наилучшую производительность. |
Ограничения использования ресурсов
Каждое использование определяет компромисс между функциональностью и производительностью. Как правило, доступ к ресурсам осуществляется с помощью следующих API.- Доступ к ЦП осуществляется с помощью ID3D10Buffer::Map, ID3D10Texture1D::Map, ID3D10Texture2D::Map или ID3D10Texture3D::Map
- Доступ к GPU осуществляется с помощью CopySubresourceRegion, CopyResource или UpdateSubresource.
Использование ресурсов | Default | Динамический | Неизменяемые | Промежуточная |
---|---|---|---|---|
GPU-Read | да | Да¹ | да | Да1, 2 |
GPU-Write | Да¹ | Да1, 2 | ||
CPU-Read | Да1, 2 | |||
CPU-Write | да | Да1, 2 |
- 1 — это только CopySubresourceRegion, CopyResource и UpdateSubresource.
- 2. Не может быть буфером трафарета глубины или целевым объектом отрисовки с несколькими выборками.
Параметры привязки ресурсов
Чтобы повысить производительность, не все параметры использования ресурсов можно использовать в качестве входных или выходных ресурсов в конвейере. В этой таблице указаны эти ограничения.Ресурс можно привязать как | Default | Динамический | Неизменяемые | Промежуточная |
---|---|---|---|---|
Входные данные для этапа | Да( да) | Да⁴ | да | |
Выходные данные этапа | Да( да) |
- 3 . Если в качестве входных и выходных данных используются разные представления, каждое представление должно использовать разные подресурсы.
- 4 . Ресурс можно создать только с одним подресурсом. Ресурс не может быть массивом текстур. Ресурс не может быть цепочкой MIP-карты.
Требования
Требование | Значение |
---|---|
Заголовок | d3d10.h |