꼭짓점 셰이더에 대한 선언 및 코드 분리
DirectX 9.0에서는 꼭짓점 셰이더를 만들 때 꼭짓점 셰이더에 대한 선언과 코드가 더 이상 함께 바인딩되지 않습니다. 꼭짓점 셰이더를 지원하는 디바이스용 DirectX 9.0 버전 드라이버는 선언 및 코드 개체의 별도 생성 및 관리를 처리해야 합니다. 그러나 DirectX 8.0 런타임에서 이러한 꼭짓점 셰이더 개체를 만들도록 요청할 수 있으므로 이 DirectX 9.0 드라이버는 여전히 선언과 코드를 결합하는 꼭짓점 셰이더 개체를 관리할 수 있어야 합니다. 자세한 내용은 꼭짓점 셰이더를 참조하세요.
DirectX 9.0 런타임은 별도의 핸들 풀의 핸들을 선언 및 코드 개체 모두에 할당합니다. DirectX 9.0 드라이버는 이러한 핸들을 별도의 배열에 저장해야 합니다. DirectX 8.0의 꼭짓점 셰이더 핸들 공간과 마찬가지로 DirectX 9.0은 꼭짓점 셰이더 선언 핸들 공간을 FVF(유연한 꼭짓점 형식) 코드와 공유합니다. 핸들의 비트 0을 설정하면 꼭짓점 셰이더 선언이 표시되며, 그렇지 않으면 FVF 코드입니다. 자세한 내용은 참조 래스터라이저(refrast.cpp 샘플 코드)를 참조하세요.
DirectX 9.0 드라이버는 D3dDrawPrimitives2 함수에서 D3DDP2OP_CREATEVERTEXSHADERDECL 작업 코드를 처리할 때 꼭짓점 셰이더 선언을 받습니다. 셰이더 선언을 구성하는 꼭짓점 요소를 정의하는 D3DHAL_DP2CREATEVERTEXSHADERDECL 구조체 및 D3DVERTEXELEMENT9 구조체의 배열은 명령 스트림의 작업 코드를 따릅니다. 셰이더 선언의 꼭짓점 요소를 처리하기 위해 DirectX 9.0 드라이버를 구현하는 경우 가능한 모든 꼭짓점 데이터 사용을 지원해야 합니다. 즉, 이러한 형식에 대한 여러 의미(사용량 인덱스 값)와 함께 모든 D3DDECLUSAGE 형식을 지원해야 합니다. D3DVERTEXELEMENT9 및 D3DDECLUSAGE에 대한 자세한 내용은 최신 DirectX SDK 설명서를 참조하세요.
DirectX 9.0 드라이버는 D3DDP2OP_CREATEVERTEXSHADERFUNC 작업 코드를 처리할 때 꼭짓점 셰이더 코드를 받습니다. D3DHAL_DP2CREATEVERTEXSHADERFUNC 구조체 및 꼭짓점 셰이더 코드는 명령 스트림의 작업 코드를 따릅니다. 개별 셰이더 코드의 형식 및 각 셰이더 코드를 구성하는 토큰에 대한 자세한 내용은 Direct3D 드라이버 셰이더 코드를 참조하세요.
DirectX 9.0 드라이버는 D3DDP2OP_SETVERTEXSHADERDECL 및 D3DDP2OP_SETVERTEXSHADERFUNC 작업 코드를 처리하여 꼭짓점 셰이더 어셈블러에서 특정 꼭짓점 셰이더 선언 및 코드를 현재 상태로 만듭니다. 드라이버는 D3DDP2OP_DELETEVERTEXSHADERDECL 및 D3DDP2OP_DELETEVERTEXSHADERFUNC 작업 코드를 처리하여 꼭짓점 셰이더 어셈블러에서 이러한 꼭짓점 셰이더 선언 및 코드를 제거합니다. 이러한 각 작업 코드에 대해 명령 스트림에서 D3DHAL_DP2VERTEXSHADER 구조가 따릅니다. 이 구조체에는 설정하거나 삭제할 선언 또는 코드에 대한 핸들을 식별하는 하나의 멤버만 포함됩니다.