What's the difference between DirectX 10 and DirectX 9?
In Civilization V, when starting the game, it offers me the option of using DirectX 10 or DirectX 9. Are there any graphics quality or performance gains present when using the DirectX 10 version? I know that it would let me turn up the settings higher (for instance, i could enable anti-aliasing in the DirectX 10 mode and couldn't in the DirectX 9 mode)
The most critical part of your choice is "Does your graphics card support directx-10 (or 11)?"
If your graphics card does support higher versions, its usually best to run with the most recent version, to get whatever bugfixes, feature improvements (advanced lighting I believe) and performance gains.
Naturally, if your card does not support the higher versions, you should NOT try running the game in that mode, and stick to Directx9 instead. As StrixVaria says, running the game in that mode should simply not work, (that is what not supported means after all) but the best you can hope for if you do try is broken graphics or the game crashing.
This forum post shows a bunch of side by side comparisons of Civ 5 in DirectX 9 versus DirectX 11.
DirectX 10/11 introduced Direct3d 10/11 respectively, each of which introduced new capabilities for developers. Ultimately, newer versions of Direct3d should import the graphical fidelity of games, when developed for appropriately, but also will demand more of your hardware (IE: running a game in DX11 will likely lower your frame-rate on the same hardware versus running a game in DX10)
From Wikipedia:
DirectX 10 Introduces
- Fixed pipelines are being done away with in favor of fully programmable pipelines (often referred to as unified pipeline architecture), which can be programmed to emulate the same.
- New state object to enable (mostly) the CPU to change states efficiently.
- Shader model 4.0 enhances the programmability of the graphics pipeline. It adds instructions for integer and bitwise calculations.
- Geometry shaders, which work on adjacent triangles which form a mesh.
- Texture arrays enable swapping of textures in GPU without CPU intervention.
- Predicated Rendering allows drawing calls to be ignored based on some other conditions. This enables rapid occlusion culling, which prevents objects from being rendered if it is not visible or too far to be visible.
- Instancing 2.0 support, allowing multiple instances of similar meshes, such as armies, or grass or trees, to be rendered in a single draw call, reducing the processing time needed for multiple similar objects to that of a single one
DirectX 11 Introduces
- Tessellation — to increase at runtime the number of visible polygons from a low detail polygonal model
- Multithreaded rendering — to render to the same Direct3D device object from different threads for multi core CPUs
- Compute shaders — which exposes the shader pipeline for non-graphical tasks such as stream processing and physics acceleration, similar in spirit to what OpenCL, NVIDIA CUDA, ATI Stream achieves, and HLSL Shader Model 5 among others