ID3DX10ThreadPump 인터페이스

작업을 비동기적으로 실행하는 데 사용되며 D3DX10CreateThreadPump로 생성됩니다. D3DX10CreateTextureFromFile 및 D3DX10CompileFromFile과 같이 필요에 따라 스레드 펌프를 매개 변수로 사용할 수 있는 몇 가지 D3DX10 API가 있습니다(전체 목록은 설명 참조). 스레드 펌프가 이러한 API에 전달되면 별도의 스레드 펌프 스레드에서 비동기적으로 실행됩니다. 이 작업을 수행하는 이점은 화면에서 성능이 저하되는 것을 보지 않고 대량의 데이터를 로드하고 처리할 수 있다는 것입니다.

멤버

ID3DX10ThreadPump 인터페이스는 IUnknown 인터페이스에서 상속됩니다. ID3DX10ThreadPump 에는 다음과 같은 유형의 멤버도 있습니다.

메서드

ID3DX10ThreadPump 인터페이스에는 이러한 메서드가 있습니다.

메서드 설명
AddWorkItem 스레드 펌프에 작업 항목을 추가합니다.
GetQueueStatus 스레드 펌프 내의 세 개의 큐 각각에 있는 항목 수를 가져옵니다.
GetWorkItemCount 현재 스레드 펌프에 있는 작업 항목 수를 가져옵니다.
ProcessDeviceWorkItems 작업 항목이 로드 및 처리를 완료한 후 디바이스로 설정합니다. 스레드 펌프가 리소스 또는 셰이더 로드 및 처리를 완료하면 이 API가 호출될 때까지 큐에 보관됩니다. 이때 처리된 항목이 디바이스로 설정됩니다. 이는 각 프레임에 대해 디바이스에 리소스를 바인딩하는 데 사용되는 처리량을 제어하는 데 유용합니다. 설명을 참조하세요.
PurgeAllItems 스레드 펌프에서 모든 작업 항목을 지웁다.
WaitForAllItems 스레드 펌프의 모든 작업 항목이 완료되기를 기다립니다.

 

설명

스레드 펌프는 3단계 프로세스에서 데이터를 로드하고 처리합니다. 다음과 같이 진행합니다.

  1. 데이터 로더를 사용하여 데이터를 로드 및 압축 해제합니다. 데이터 로더 개체에는 스레드 펌프가 데이터를 로드 및 압축 해제할 때 내부적으로 호출하는 세 가지 메서드인 ID3DX10DataLoader::Load, ID3DX10DataLoader::D ecompressID3DX10DataLoader::D estroy가 있습니다. 이러한 세 API의 특정 기능은 로드 및 압축 해제되는 데이터 형식에 따라 다릅니다. 데이터 로더 인터페이스도 상속할 수 있으며 자체 사용자 지정 형식으로 정의된 데이터 파일을 로드하는 경우 해당 API를 변경할 수 있습니다.
  2. 데이터 프로세서를 사용하여 데이터를 처리합니다. 데이터 프로세서 개체에는 스레드 펌프가 데이터를 처리하는 동안 내부적으로 호출하는 세 가지 메서드인 ID3DX10DataProcessor::P rocess, ID3DX10DataProcessor::CreateDeviceObjectID3DX10DataProcessor::D estroy가 있습니다. 데이터 처리 방법은 데이터 형식에 따라 다릅니다. 예를 들어 데이터가 JPEG로 저장된 텍스처인 경우 ID3DX10DataProcessor::P rocess 는 JPEG 압축 해제를 수행하여 이미지의 원시 이미지 비트를 가져옵니다. 데이터가 셰이더인 경우 ID3DX10DataProcessor::P rocess 는 HLSL을 바이트코드로 컴파일합니다. 데이터가 처리되면 해당 데이터에 대한 디바이스 개체가 만들어지고( ID3DX10DataProcessor::CreateDeviceObject 사용) 개체가 디바이스 개체의 큐에 추가됩니다. 데이터 프로세서 인터페이스도 상속할 수 있으며 자체 사용자 지정 형식으로 정의된 데이터 파일을 처리하는 경우 해당 API를 변경할 수 있습니다.
  3. 디바이스 개체를 디바이스에 바인딩합니다. 이 작업은 애플리케이션이 ID3DX10ThreadPump::P rocessDeviceWorkItems를 호출하면 디바이스 개체 큐에 지정된 수의 개체를 디바이스에 바인딩합니다.

스레드 펌프는 D3DX10CreateTextureFromFile 및 D3DX10CompileFromFile과 같은 매개 변수로 스레드 펌프를 사용하는 API를 호출하거나 ID3DX10ThreadPump::AddWorkItem을 호출하는 두 가지 방법 중 하나로 데이터를 로드하는 데 사용할 수 있습니다. 스레드 펌프를 사용하는 API의 경우 데이터 로더 및 데이터 프로세서가 내부적으로 만들어집니다. AddWorkItem의 경우 데이터 로더 및 데이터 프로세서를 미리 만든 다음 AddWorkItem에 전달해야 합니다. D3DX10은 일반적인 데이터 형식을 로드하고 처리하는 기능이 있는 데이터 로더 및 데이터 프로세서를 만들기 위한 API 집합을 제공합니다(전체 API 목록은 설명 참조). 사용자 지정 데이터 형식의 경우 데이터 로더 및 데이터 프로세서 인터페이스를 상속해야 하며 해당 메서드를 다시 정의해야 합니다.

스레드 펌프 개체는 상당한 양의 리소스를 차지하므로 일반적으로 애플리케이션당 하나만 만들어야 합니다.

기본 제공 D3DX10 데이터 로더

Description
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 인터페이스