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