Why does my programmable vertex shader fail during creation on some hardware?
This may be because the device created by your application is using hardware vertex processing, but the video hardware or driver does not support the programmable vertex shader execution in hardware, or does not implement the version of vertex shader code required by your shader. To prevent this, you should check for vertex shader support when evaluating devices that use hardware vertex processing. For example, if you are implementing a vertex shader that requires Version 1.0 support, you would add the following to the ConfirmDevice() code (assuming you are using the D3DApp framework): if( (dwBehavior & D3DCREATE_HARDWARE_VERTEXPROCESSING ) || (dwBehavior & D3DCREATE_MIXED_VERTEXPROCESSING ) ) { if( pCaps->VertexShaderVersion < D3DVS_VERSION(1,0) ) return E_FAIL; } You do not need to perform this check on devices using software vertex processing, as shader support is guaranteed through emulation.