Интерфейс ID3DX10ThreadPump
Используется для асинхронного выполнения задач и создания с помощью D3DX10CreateThreadPump. Существует несколько API D3DX10, которые при необходимости могут принимать потоковый насос в качестве параметра, например D3DX10CreateTextureFromFile и D3DX10CompileFromFile (см. примечания для полного списка). Если потоковые насосы передаются в эти API, они будут выполняться асинхронно в отдельном потоке потока. Преимущество этого заключается в том, что это может сделать загрузку и обработку больших объемов данных происходит без заметного замедления производительности на экране.
Элементы
Интерфейс ID3DX10ThreadPump наследуется от интерфейса IUnknown . ID3DX10ThreadPump также имеет следующие типы элементов:
Методы
Интерфейс ID3DX10ThreadPump имеет эти методы.
Метод | Описание |
---|---|
AddWorkItem | Добавьте рабочий элемент в поток насос. |
GetQueueStatus | Получение количества элементов в каждой из трех очередей в потоковом насосе. |
GetWorkItemCount | Получение количества рабочих элементов в текущий момент в потоковом насосе. |
ProcessDeviceWorkItems | Установите рабочие элементы на устройство после завершения загрузки и обработки. Когда потоковый насос завершит загрузку и обработку ресурса или шейдера, он будет хранить его в очереди, пока не будет вызван этот API, после чего обработанные элементы будут заданы на устройстве. Это полезно для управления объемом обработки, потраченной на привязку ресурсов к устройству для каждого кадра. См. примечания. |
PurgeAllItems | Очистка всех рабочих элементов из насоса потока. |
WaitForAllItems | Дождитесь завершения всех рабочих элементов в потоковом насосе. |
Remarks
Потоковые насосы загружают и обрабатывают данные в ходе 3-го этапа. Он идет:
- Загрузите и распакуйте данные с помощью загрузчика данных. Объект загрузчика данных имеет три метода, которые поток-насос вызывает внутри системы, так как он загружает и распаковывание данных: ID3DX10DataLoader::Load, ID3DX10DataLoader::D ecompress и ID3DX10DataLoader::D edata. Конкретные функциональные возможности этих трех API отличаются в зависимости от типа загружаемых и распаковываемых данных. Интерфейс загрузчика данных также можно наследовать, и его API-интерфейсы можно изменить, если он загружает файл данных, определенный в собственном пользовательском формате.
- Обработка данных с помощью обработчика данных. Объект обработчика данных имеет три метода, которые поток-насос вызывает внутренне, так как он обрабатывает данные: ID3DX10DataProcessor::P rocess, ID3DX10DataProcessor::CreateDeviceObject и ID3DX10DataProcessor::D edata. Способ обработки данных будет отличаться в зависимости от типа данных. Например, если данные являются текстурой, хранящейся в формате JPEG, то ID3DX10DataProcessor::P rocess выполнит распаковку JPEG, чтобы получить необработанные биты изображения. Если данные являются шейдером, id3DX10DataProcessor::P rocess компилирует HLSL в байт-код. После обработки данных объект устройства будет создан для этих данных (с ID3DX10DataProcessor::CreateDeviceObject), и объект будет добавлен в очередь объектов устройства. Интерфейс обработчика данных также можно наследовать, и его API-интерфейсы можно изменить, если он обрабатывает файл данных, определенный в собственном пользовательском формате.
- Привяжите объект устройства к устройству. Это делается, когда приложение вызывает 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 | Создайте ресурс текстуры из другого ресурса. |
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|
См. также раздел