LPD3DHAL_VALIDATETEXTURESTAGESTATECB 콜백 함수(d3dhal.h)
D3dValidateTextureStageState 함수는 하드웨어가 현재 상태에 지정된 혼합 작업을 수행할 수 있는 패스 수를 반환합니다.
구문
LPD3DHAL_VALIDATETEXTURESTAGESTATECB Lpd3dhalValidatetexturestagestatecb;
DWORD Lpd3dhalValidatetexturestagestatecb(
LPD3DHAL_VALIDATETEXTURESTAGESTATEDATA unnamedParam1
)
{...}
매개 변수
unnamedParam1
pvtssd [in]
드라이버가 혼합 작업을 수행하는 데 필요한 패스 수를 확인하고 반환하는 데 필요한 정보가 포함된 D3DHAL_VALIDATETEXTURESTAGESTATEDATA 구조를 가리킵니다.
반환 값
D3dValidateTextureStageState 는 다음 콜백 코드 중 하나를 반환합니다.
설명
텍스처링을 지원하는 Microsoft Direct3D 드라이버는 D3dValidateTextureStageState를 구현해야 합니다.
이 함수의 드라이버 구현은 컨텍스트와 연결된 모든 텍스처 단계에 대해 현재 텍스처 상태를 평가해야 합니다. 드라이버의 하드웨어가 지정된 혼합 작업을 수행할 수 있는 경우 드라이버는 하드웨어에 필요한 상태 데이터에 대한 패스 수를 반환해야 합니다. 하드웨어가 지정된 혼합 작업을 수행할 수 없는 경우 드라이버는 pvtssd에 있는 D3DHAL_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 포함) |