꼭짓점 셰이더
DirectX 8.0 DDI를 지원하는 모든 드라이버는 프로그래밍 가능한 꼭짓점 셰이더가 하드웨어에서 지원되지 않는 경우에도 새 DP2 토큰 D3DDP2OP_SETVERTEXSHADER 지원해야 합니다. 이는 D3DDP2OP_SETVERTEXSHADER 고정 함수와 프로그래밍 가능한 꼭짓점 처리를 사용할 때 들어오는 꼭짓점 데이터의 FVF 코드가 드라이버에 전달되는 메커니즘이기 때문입니다.
D3DDP2OP_SETVERTEXSHADER 사용하여 현재 프로그래밍 가능한 꼭짓점 셰이더의 핸들 또는 고정 함수 꼭짓점 처리를 위해 꼭짓점 데이터의 FVF 코드를 드라이버에 알릴 수 있습니다. 꼭짓점 셰이더의 핸들 공간은 런타임에서 관리되며 유효한 FVF 코드를 포함합니다. 따라서 꼭짓점 셰이더 핸들은 D3DDP2OP_CREATEVERTEXSHADER DP2 토큰을 통해 이전에 만든 프로그래밍 가능한 꼭짓점 셰이더 핸들 또는 고정 함수 꼭짓점 처리에서 처리할 꼭짓점 형식의 FVF 코드를 참조할 수 있습니다.
프로그래밍 가능한 꼭짓점 처리를 지원하지 않는 하드웨어용 드라이버는 스트림 0에 바인딩된 꼭짓점 데이터에 대한 FVF 코드(따라서 수행할 처리)를 결정하기 위해 D3DDP2OP_SETVERTEXSHADER 처리해야 합니다. 이는 UM(사용자 메모리) 기본 형식을 처리할 때 특히 중요합니다. 이 경우 제공된 꼭짓점 데이터의 FVF 코드를 결정하는 유일한 방법은 D3DDP2OP_SETVERTEXSHADER 토큰을 통한 것입니다. 핸들의 최소 비트(1)가 설정된 경우 핸들은 꼭짓점 셰이더 처리기입니다. 가장 중요한 비트가 지우기(0)이면 핸들은 레거시 FVF 코드입니다.
꼭짓점 버퍼의 FVF 코드가 D3DDP2OP_SETVERTEXSHADER 지정한 코드와 충돌하는 경우 드라이버는 꼭짓점 버퍼의 FVF 코드를 무시하고 계속해야 합니다.
DirectX 런타임은 FVF 코드만 꼭짓점 셰이더 핸들로 프로그래밍 가능한 꼭짓점 처리를 지원하지 않는 드라이버에 전달되도록 보장합니다. 그러나 이러한 드라이버에는 전달된 FVF 코드가 지원되는지 확인하는 디버그 코드가 있어야 합니다.