ID3DX10ThreadPump 인터페이스
작업을 비동기적으로 실행하는 데 사용되며 D3DX10CreateThreadPump로 생성됩니다. D3DX10CreateTextureFromFile 및 D3DX10CompileFromFile과 같이 필요에 따라 스레드 펌프를 매개 변수로 사용할 수 있는 몇 가지 D3DX10 API가 있습니다(전체 목록은 설명 참조). 스레드 펌프가 이러한 API에 전달되면 별도의 스레드 펌프 스레드에서 비동기적으로 실행됩니다. 이 작업을 수행하는 이점은 화면에서 성능이 저하되는 것을 보지 않고 대량의 데이터를 로드하고 처리할 수 있다는 것입니다.
멤버
ID3DX10ThreadPump 인터페이스는 IUnknown 인터페이스에서 상속됩니다. ID3DX10ThreadPump 에는 다음과 같은 유형의 멤버도 있습니다.
메서드
ID3DX10ThreadPump 인터페이스에는 이러한 메서드가 있습니다.
메서드 | 설명 |
---|---|
AddWorkItem | 스레드 펌프에 작업 항목을 추가합니다. |
GetQueueStatus | 스레드 펌프 내의 세 개의 큐 각각에 있는 항목 수를 가져옵니다. |
GetWorkItemCount | 현재 스레드 펌프에 있는 작업 항목 수를 가져옵니다. |
ProcessDeviceWorkItems | 작업 항목이 로드 및 처리를 완료한 후 디바이스로 설정합니다. 스레드 펌프가 리소스 또는 셰이더 로드 및 처리를 완료하면 이 API가 호출될 때까지 큐에 보관됩니다. 이때 처리된 항목이 디바이스로 설정됩니다. 이는 각 프레임에 대해 디바이스에 리소스를 바인딩하는 데 사용되는 처리량을 제어하는 데 유용합니다. 설명을 참조하세요. |
PurgeAllItems | 스레드 펌프에서 모든 작업 항목을 지웁다. |
WaitForAllItems | 스레드 펌프의 모든 작업 항목이 완료되기를 기다립니다. |
설명
스레드 펌프는 3단계 프로세스에서 데이터를 로드하고 처리합니다. 다음과 같이 진행합니다.
- 데이터 로더를 사용하여 데이터를 로드 및 압축 해제합니다. 데이터 로더 개체에는 스레드 펌프가 데이터를 로드 및 압축 해제할 때 내부적으로 호출하는 세 가지 메서드인 ID3DX10DataLoader::Load, ID3DX10DataLoader::D ecompress 및 ID3DX10DataLoader::D estroy가 있습니다. 이러한 세 API의 특정 기능은 로드 및 압축 해제되는 데이터 형식에 따라 다릅니다. 데이터 로더 인터페이스도 상속할 수 있으며 자체 사용자 지정 형식으로 정의된 데이터 파일을 로드하는 경우 해당 API를 변경할 수 있습니다.
- 데이터 프로세서를 사용하여 데이터를 처리합니다. 데이터 프로세서 개체에는 스레드 펌프가 데이터를 처리하는 동안 내부적으로 호출하는 세 가지 메서드인 ID3DX10DataProcessor::P rocess, ID3DX10DataProcessor::CreateDeviceObject 및 ID3DX10DataProcessor::D estroy가 있습니다. 데이터 처리 방법은 데이터 형식에 따라 다릅니다. 예를 들어 데이터가 JPEG로 저장된 텍스처인 경우 ID3DX10DataProcessor::P rocess 는 JPEG 압축 해제를 수행하여 이미지의 원시 이미지 비트를 가져옵니다. 데이터가 셰이더인 경우 ID3DX10DataProcessor::P rocess 는 HLSL을 바이트코드로 컴파일합니다. 데이터가 처리되면 해당 데이터에 대한 디바이스 개체가 만들어지고( ID3DX10DataProcessor::CreateDeviceObject 사용) 개체가 디바이스 개체의 큐에 추가됩니다. 데이터 프로세서 인터페이스도 상속할 수 있으며 자체 사용자 지정 형식으로 정의된 데이터 파일을 처리하는 경우 해당 API를 변경할 수 있습니다.
- 디바이스 개체를 디바이스에 바인딩합니다. 이 작업은 애플리케이션이 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입니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|
라이브러리 |
|
추가 정보