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


Интерфейс ID3DX10ThreadPump

Используется для асинхронного выполнения задач и создается с помощью D3DX10CreateThreadPump. Существует несколько API D3DX10, которые при необходимости могут принимать потоковый насос в качестве параметра, например D3DX10CreateTextureFromFile и D3DX10CompileFromFile (полный список см. в примечаниях). Если поток передается в эти API, они будут выполняться асинхронно в отдельном потоке потока. Преимущество этого заключается в том, что это может сделать загрузку и обработку больших объемов данных без заметного снижения производительности на экране.

Элементы

Интерфейс ID3DX10ThreadPump наследуется от интерфейса IUnknown . ID3DX10ThreadPump также имеет следующие типы элементов:

Методы

Интерфейс ID3DX10ThreadPump содержит следующие методы.

Метод Описание
AddWorkItem Добавьте рабочий элемент в поток.
GetQueueStatus Получение количества элементов в каждой из трех очередей в потоке.
GetWorkItemCount Получение количества рабочих элементов, которые в данный момент находятся в потоке.
ProcessDeviceWorkItems Установите рабочие элементы на устройство после завершения загрузки и обработки. Когда потоковый насос завершит загрузку и обработку ресурса или шейдера, он будет хранить его в очереди до вызова этого API, после чего обработанные элементы будут настроены на устройство. Это полезно для управления объемом обработки, затрачиваемого на привязку ресурсов к устройству для каждого кадра. См. примечания.
PurgeAllItems Очистите все рабочие элементы из потока.
WaitForAllItems Дождитесь завершения всех рабочих элементов в потоке.

 

Комментарии

Потоковой насос загружает и обрабатывает данные в 3 шагах. Он идет:

  1. Загрузите и распакуйте данные с помощью загрузчика данных. Объект загрузчика данных имеет три метода, которые поток будет вызывать внутренним образом при загрузке и распаковке данных: ID3DX10DataLoader::Load, ID3DX10DataLoader::D ecompress и ID3DX10DataLoader::D eвыбор. Конкретные функциональные возможности этих трех API различаются в зависимости от типа загружаемых и распаковываемых данных. Интерфейс загрузчика данных также может быть унаследован, и его API-интерфейсы можно изменить, если загружается файл данных, определенный в собственном пользовательском формате.
  2. Обработка данных с помощью обработчика данных. Объект обработчика данных имеет три метода, которые поток будет вызывать внутренним образом при обработке данных: ID3DX10DataProcessor::P rocess, ID3DX10DataProcessor::CreateDeviceObject и ID3DX10DataProcessor::D eprocessor. Способ обработки данных будет отличаться в зависимости от типа данных. Например, если данные являются текстурой, хранящейся в формате JPEG, то ID3DX10DataProcessor::P rocess выполнит распаковку JPEG, чтобы получить необработанные биты изображения. Если данные являются шейдером, id3DX10DataProcessor::P rocess компилирует HLSL в байт-код. После обработки данных для этих данных будет создан объект устройства (с id3DX10DataProcessor::CreateDeviceObject), и объект будет добавлен в очередь объектов устройств. Интерфейс обработчика данных также может быть унаследован, а его API-интерфейсы можно изменить при обработке файла данных, определенного в собственном пользовательском формате.
  3. Привяжите объект устройства к устройству. Это делается, когда приложение вызывает ID3DX10ThreadPump::P rocessDeviceWorkItems, что привязывает указанное количество объектов в очереди объектов устройства к устройству.

Потоковый насос можно использовать для загрузки данных одним из двух способов: путем вызова API, который принимает поток в качестве параметра, например D3DX10CreateTextureFromFile и D3DX10CompileFromFile, или путем вызова ID3DX10ThreadPump::AddWorkItem. В случае API, которые принимают поток потока, загрузчик данных и обработчик данных создаются внутри. В случае с AddWorkItem загрузчик данных и обработчик данных должны быть созданы заранее, а затем переданы в AddWorkItem. D3DX10 предоставляет набор API-интерфейсов для создания загрузчиков данных и обработчиков данных с функциями загрузки и обработки общих форматов данных (полный список API см. в примечаниях). Для пользовательских форматов данных интерфейсы загрузчика данных и обработчика данных должны быть унаследованы, а их методы должны быть переопределены.

Объект потокового насоса занимает значительное количество ресурсов, поэтому обычно для каждого приложения следует создавать только один.

Встроенные загрузчики данных D3DX10

Описание
D3DX10CreateAsyncFileLoader Создание файлового загрузчика в асинхронном режиме.
D3DX10CreateAsyncMemoryLoader Создайте загрузчик данных асинхронно.
D3DX10CreateAsyncResourceLoader Создайте загрузчик ресурсов асинхронно.

 

Встроенные обработчики данных D3DX10

Описание
D3DX10CreateAsyncTextureProcessor Создайте обработчик данных для использования с потоком. Этот API похож на D3DX10CreateAsyncTextureInfoProcessor, но он также загружает текстуру.
D3DX10CreateAsyncTextureInfoProcessor Создайте обработчик данных для использования с потоком.
D3DX10CreateAsyncShaderCompilerProcessor Скомпилируйте шейдер и создайте обработчик данных асинхронно.
D3DX10CreateAsyncEffectCompilerProcessor Создайте эффект с помощью обработчика данных асинхронно.
D3DX10CreateAsyncEffectCreateProcessor Создайте пул эффектов асинхронно.
D3DX10CreateAsyncEffectPoolCreateProcessor Создание обработчика данных в асинхронном режиме.
D3DX10CreateAsyncShaderPreprocessProcessor Создайте обработчик данных для шейдера асинхронно.

 

API, которые принимают поток насоса в качестве параметра.

Описание
D3DX10CompileFromFile Скомпилируйте шейдер из файла.
D3DX10CompileFromMemory Скомпилируйте шейдер, размещенный в памяти.
D3DX10CompileFromResource Скомпилируйте шейдер из ресурса.
D3DX10CreateEffectFromFile Создание эффекта из файла.
D3DX10CreateEffectFromMemory Создайте эффект из памяти.
D3DX10CreateEffectFromResource Создание эффекта из ресурса.
D3DX10CreateEffectPoolFromFile Создайте пул эффектов из файла.
D3DX10CreateEffectPoolFromMemory Создайте пул эффектов из файла, который находится в памяти.
D3DX10CreateEffectPoolFromResource Создание пула эффектов из ресурса.
D3DX10PreprocessShaderFromFile Создание шейдера из файла без его компиляции.
D3DX10PreprocessShaderFromMemory Создание шейдера из памяти без его компиляции.
D3DX10PreprocessShaderFromResource Создание шейдера из ресурса без его компиляции.
D3DX10CreateShaderResourceViewFromFile Создайте представление ресурсов шейдера из файла.
D3DX10CreateShaderResourceViewFromMemory Создайте представление ресурсов шейдера из файла в памяти.
D3DX10CreateShaderResourceViewFromResource Создайте представление шейдер-ресурса из ресурса.
D3DX10GetImageInfoFromFile Извлекает сведения о заданном файле изображения.
D3DX10GetImageInfoFromMemory Получение сведений об изображении, уже загруженном в память.
D3DX10GetImageInfoFromResource Извлекает сведения о заданном изображении в ресурсе.
D3DX10CreateTextureFromFile Создайте ресурс текстуры из файла.
D3DX10CreateTextureFromMemory Создайте ресурс текстуры из файла, размещенного в системной памяти.
D3DX10CreateTextureFromResource Создайте ресурс текстуры из другого ресурса.

 

Требования

Требование Значение
Заголовок
D3DX10.h
Библиотека
D3DX10.lib

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

Интерфейсы D3DX