Интерфейс ID3DX10ThreadPump

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

Элементы

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

Методы

Интерфейс ID3DX10ThreadPump имеет эти методы.

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

 

Remarks

Потоковые насосы загружают и обрабатывают данные в ходе 3-го этапа. Он идет:

  1. Загрузите и распакуйте данные с помощью загрузчика данных. Объект загрузчика данных имеет три метода, которые поток-насос вызывает внутри системы, так как он загружает и распаковывание данных: ID3DX10DataLoader::Load, ID3DX10DataLoader::D ecompress и ID3DX10DataLoader::D edata. Конкретные функциональные возможности этих трех API отличаются в зависимости от типа загружаемых и распаковываемых данных. Интерфейс загрузчика данных также можно наследовать, и его API-интерфейсы можно изменить, если он загружает файл данных, определенный в собственном пользовательском формате.
  2. Обработка данных с помощью обработчика данных. Объект обработчика данных имеет три метода, которые поток-насос вызывает внутренне, так как он обрабатывает данные: ID3DX10DataProcessor::P rocess, ID3DX10DataProcessor::CreateDeviceObject и ID3DX10DataProcessor::D edata. Способ обработки данных будет отличаться в зависимости от типа данных. Например, если данные являются текстурой, хранящейся в формате 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