DirectX Graphics 레퍼런스 Direct3D C/C++ 레퍼런스 인터페이스 IDirect3DDevice9 ValidateDevice   [목차열람] [주소복사] [슬롯비우기]
IDirect3DDevice9::ValidateDevice 메서드
 
Microsoft DirectX 9.0

IDirect3DDevice9::ValidateDevice 메서드


현재의 텍스처의 혼합 처리와 인수를 장치가 1 회의 처리로 렌더링 할 수 있는 능력을 보고한다.

구문

HRESULT ValidateDevice(      

    DWORD *pNumPasses );

파라미터

pNumPasses
[out, retval] 멀티 패스 렌더링에 의해 목적의 이펙트를 완성하기 위해서 필요한 렌더링 패스의 수를 저장 하는 DWORD 값의 포인터.

반환값

성공했을 경우는,D3D_OK 를 돌려준다.

실패했을 경우는, 다음의 몇개의 값을 돌려준다.

D3DERR_CONFLICTINGTEXTUREFILTER현재의 텍스처 필터는 동시에는 사용할 수 없다.
D3DERR_DEVICELOST장치는, 손실하고 있지만, 현재 리셋 할 수 없다. 따라서, 렌더링은 불가능하다.
D3DERR_DRIVERINTERNALERROR

내부 드라이버 에러. 보통, 이 에러를 받으면 애플리케이션은 셧다운 해야 한다. 더 자세한 정보는, 「드라이버의 내부 에러」를 참조할것.

D3DERR_TOOMANYOPERATIONS장치가 지원 하고 있는 수보다 많은 텍스처 필터링 처리를, 애플리케이션이 요구하고 있다.
D3DERR_UNSUPPORTEDALPHAARG알파 채널에 대해서 지정되고 있는 텍스처 혼합 인수를, 장치가 지원 하고 있지 않다.
D3DERR_UNSUPPORTEDALPHAOPERATION알파 채널에 대해서 지정되고 있는 텍스처 혼합 처리를, 장치가 지원 하고 있지 않다.
D3DERR_UNSUPPORTEDCOLORARG색값에 대해서 지정되고 있는 텍스처 혼합 인수를, 장치가 지원 하고 있지 않다.
D3DERR_UNSUPPORTEDCOLOROPERATION색값에 대해서 지정되고 있는 텍스처 혼합 처리를, 장치가 지원 하고 있지 않다.
D3DERR_UNSUPPORTEDFACTORVALUE장치가 지정된 텍스처 계수값을 지원 하고 있지 않다.
D3DERR_UNSUPPORTEDTEXTUREFILTER장치가 지정된 텍스처 필터를 지원 하고 있지 않다.
D3DERR_WRONGTEXTUREFORMAT텍스처 표면의 픽셀 포맷이 무효이다.


주의

IDirect3DDevice9::ValidateDevice 메서드는, 다른 능력이 부속되어 있는 시나리오를 검증하는 경우에만 사용해야 한다. 예를 들어, 멀티 스테이지 텍스처링의 시나리오에서는,D3DCAPS9 구조체의 MaxTextureBlendStages 멤버와 MaxSimultaneousTextures 멤버를 조사하는 것으로, 그 장치로 멀티 스테이지 텍스처링이 가능한가 어떤가를 판단할 수 있다.

현재의 하드웨어가, 반드시 조작과 인수의 가능한 모든 편성을 처리 하고 있을 필요는 없다. 주어진 인수로 특정의 혼합 처리를 실행할 수 있을지 어떨지는, 목적의 혼합 처리를 설정해,IDirect3DDevice9::ValidateDevice 메서드를 호출하면 확인할 수 있다.

IDirect3DDevice9::ValidateDevice 메서드는, 현재의 렌더링 스테이트, 텍스처, 텍스처 스테이지의 스테이트를 사용해, 불려 간 시점에서의 확인을 실시한다. 이 호출의 후에 이러한 요소로 변경이 있으면 지금까지의 확인 결과는 무효가 되므로, 장면(scene)의 렌더링을 하기 전에 이 메서드를 다시 호출해야 한다.

최적인 퍼포먼스를 얻으려면 , 초기화시에 IDirect3DDevice9::ValidateDevice 를 호출하는 것. 다만, 렌더링 루프내에서 이것을 사용해서는 안 된다.

디퓨즈 보간값의 인수 또는 조작 (D3DTA_DIFFUSED3DTOP_BLENDDIFFUSEALPHA)으로서의 사용은, 현재의 하드웨어에서는 거의 지원하지 않는다. 대부분의 하드웨어에서는, 직전의 텍스처 처리 스테이지에 있어 보간색데이터의 값을 도입하고 있는 정도이다.

각 스테이지의 텍스처 (D3DTA_TEXTURE)는, 제 2 인수는 아니고 제 1 인수로서 지정하도록(듯이) 한다.

많은 카드는, 임의의 텍스처 스테이지에 있어서의 디퓨즈값이나 스칼라-값의 사용은 지원 하고 있지 않다. 이것들은, 최초 또는 마지막 텍스처 혼합 스테이지에서만 사용할 수 있는 것이 많다.

최초의 텍스처에 관련된 혼합 유니트로, 알파 채널로부터 컬러 채널에의 복제나 입력 반전 등 이상의 능력을 가지는 것을 갖춘 카드는 적다. 따라서, 애플리케이션에서는, 가능한 경우, 2 번째의 텍스처 스테이지만을 사용하지 않으면 안 될 때가 있다. 이러한 하드웨어에서는, 최초의 유니트는 디폴트 스테이트에 있으면 가정되어 D3DTOP_SELECTARG1 처리에 있어서의 제 1 컬러 인수에는 D3DTA_TEXTURE 가 설정된다.

출력되는 알파값에 대한 처리로, 컬러 처리보다 복잡한 것, 또는 컬러 처리와 본질적으로 다른 것을 지원 하는 하드웨어는, 한층 더 적다.

하드웨어에 따라서는, D3DTA_TFACTOR 와 D3DTA_DIFFUSE 의 동시 사용을 지원 하고 있지 않는 경우도 있다.

또 많은 카드는, 멀티 텍스처와 밉맵 트라이 리니어 필터링의 동시 사용을 지원 하고 있지 않다. 멀티 텍스처 혼합 처리에 있어서의 텍스처에 대해서 트라이 리니어 필터링이 요구되었을 경우, 타당성 검증이 실패 하면, 트라이 리니어 필터링은 오프가 되어 재검증을 한다. 이러한 경우에는, 대신에 멀티 패스 렌더링을 실행하면 좋다.

참조

IDirect3DDevice9::GetTextureStageState ,IDirect3DDevice9::SetTextureStageState


© 2002 Microsoft Corporation. All rights reserved.
↑TOP