If I set the directx feature level to D3D_FEATURE_LEVEL_9_3 but I have a graphics card which supports D3D_FEATURE_LEVEL_11_0 does that prevent directx11 features from working even though my graphics card supports them?

I want to ensure that my game works on 9.3 level hardware but don't have such a card to test it on. If I accidentally use higher features in my code, will setting the feature level lower when creating the device prevent those features from working even though my physical graphics card supports them?


1 Answer 1


Think of feature levels as rulesets defining what hardware abilities of a video card you are allowed to use.

So when you create a D3D11Device with D3D_FEATURE_LEVEL_9_3, you can still benefit from "software" D3D11 features which happen on driver and API level without involving hardware, such as better multi-threaded rendering, but your D3D11-capable video card will only give you the hardware abilities of a D3D9.3-capable video card. So geometry shaders and other fancy things will be unavailable, and runtime error will pop up when you try to use them.

This way your code will run on a real old D3D9.3 video card while being relatively easy to port to a higher-level device. Check this link to see how device capabilities correspond to different feature levels.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .