LPD3DHAL_VALIDATETEXTURESTAGESTATECB 콜백 함수(d3dhal.h)
D3dValidateTextureStageState 함수는 하드웨어가 현재 상태에 지정된 혼합 작업을 수행할 수 있는 패스 수를 반환합니다.
통사론
LPD3DHAL_VALIDATETEXTURESTAGESTATECB Lpd3dhalValidatetexturestagestatecb;
DWORD Lpd3dhalValidatetexturestagestatecb(
LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA unnamedParam1
)
{...}
매개 변수
unnamedParam1
pvtssd [in]
드라이버가 혼합 작업을 수행하는 데 필요한 패스 수를 확인하고 반환하는 데 필요한 정보가 포함된 D3DHAL_VALIDATETEXTURESTAGESTATEDATA 구조를 가리킵니다.
반환 값
D3dValidateTextureStageState 다음 콜백 코드 중 하나를 반환합니다.
발언
텍스처링을 지원하는 Microsoft Direct3D 드라이버는 D3dValidateTextureStageState 구현해야 합니다.
이 함수의 드라이버 구현은 컨텍스트와 연결된 모든 텍스처 단계에 대해 현재 텍스처 상태를 평가해야 합니다. 드라이버의 하드웨어가 지정된 혼합 작업을 수행할 수 있는 경우 드라이버는 하드웨어에 필요한 상태 데이터에 대한 패스 수를 반환해야 합니다. 하드웨어가 지정된 혼합 작업을 수행할 수 없는 경우 드라이버는 pvtssdD3DHAL_VALIDATETEXTURESTAGESTATEDATA 구조체의 ddrval 멤버에서 다음 오류 코드 중 하나를 반환해야 합니다.
오류 코드 | 의미 |
---|---|
D3DERR_CONFLICTINGTEXTUREFILTER | 하드웨어는 3선형 필터링과 다중 텍스트 작업을 동시에 수행할 수 없습니다. |
D3DERR_TOOMANYOPERATIONS | 하드웨어에서 지정된 수의 작업을 처리할 수 없습니다. |
D3DERR_UNSUPPORTEDALPHAARG | 하드웨어는 지정된 알파 인수를 지원하지 않습니다. |
D3DERR_UNSUPPORTEDALPHAOPERATION | 하드웨어는 지정된 알파 작업을 지원하지 않습니다. |
D3DERR_UNSUPPORTEDCOLORARG | 하드웨어는 지정된 색 인수를 지원하지 않습니다. |
D3DERR_UNSUPPORTEDCOLOROPERATION | 하드웨어는 지정된 색 작업을 지원하지 않습니다. |
D3DERR_UNSUPPORTEDFACTORVALUE | 하드웨어는 1.0보다 큰 D3DTA_TFACTOR 지원하지 않습니다. |
D3DERR_WRONGTEXTUREFORMAT | 하드웨어는 선택한 텍스처 형식의 현재 상태를 지원하지 않습니다. |
Direct3D는 IDirect3DDevice7::ValidateDevice호출을 통해 애플리케이션 요청에 대한 응답으로 D3dValidateTextureStageState 호출합니다. 드라이버에서 반환된 패스 수가 애플리케이션으로 다시 전파되어 현재 상태를 사용하여 렌더링을 진행할지 아니면 혼합 작업을 변경하여 더 빠르게 렌더링할지 또는 렌더링할지를 결정할 수 있습니다. 드라이버가 반환할 수 있는 패스 수에는 제한이 없습니다.
둘 이상의 패스를 반환하는 드라이버는 렌더링할 때 모든 상태 및 기본 데이터에 대한 패스를 올바르게 실행해야 합니다.
D3dValidateTextureStageState 실패할 가능성이 있는 요청:
확산 반복 값을 ARG로 사용하거나 BLENDDIFFUSE 작업은 현재 하드웨어에서 드물게 지원됩니다. 대부분의 파트는 마지막 텍스처 작업 단계에서 반복된 색 데이터만 도입할 수 있습니다.
arg2에 대한 기본 설정에서 각 스테이지의 텍스처를 arg1로 지정하려고 합니다.
임의의 멀티텍스처 혼합 단계에서 확산 또는 스칼라 값을 사용하려고 합니다. 많은 카드의 경우 이러한 값은 최종 텍스처 혼합 상태에서만 사용할 수 있습니다. 첫 번째 단계에서만 다른 사용자를 위한 것입니다.
색 채널에 알파를 복제하거나 입력을 반전하는 것보다 첫 번째 텍스처에서 더 많은 작업을 수행하려고 합니다. 많은 카드의 경우 첫 번째 텍스처와 연결된 혼합 단위는 이러한 것보다 더 복잡한 작업을 처리할 수 없습니다. 아래 샘플은 가능한 경우 두 번째 텍스처의 혼합 단위만 사용하려고 합니다. 첫 번째 단위는 샘플에서 기본 상태로 추정됩니다.
dev.SetTextureStageState( n, D3DTSS_COLORARG1, D3DTA_TEXTURE ); * dev.SetTextureStageState( n, D3DTSS_COLOROP, D3DTOP_SELECTARG1 ); *
색 채널에 지정된 작업보다 복잡하거나 실질적으로 다른 출력 알파에 대한 작업을 수행하는 작업은 지원되지 않을 가능성이 낮습니다.
D3DTA_TFACTOR 및 D3DTA_DIFFUSE 동시에 사용하려고 합니다. 일부 하드웨어는 이를 지원하지 않습니다.
여러 텍스처와 MIP 매핑된 삼선형 필터링을 동시에 사용하려고 합니다. 대부분의 카드는 이러한 작업을 동시에 지원하지 않습니다. 다중 텍스트 작업과 관련된 텍스처에 대해 삼선형 필터링이 요청되었으며 유효성 검사에 실패한 경우 삼선형을 끄고 다시 시도합니다. 이 경우 멀티패스 렌더링을 대신 수행하는 것이 가장 좋습니다.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 바탕 화면 |
헤더 | d3dhal.h(D3dhal.h 포함) |