API Features (Direct3D 10)

The Direct3D 10 graphics pipeline represents a fundamental architecture change, rebuilt from the ground-up in hardware and software to power the next-generation of games and 3D multimedia applications. It uses the Windows Display Driver Model (WDDM), which enables performance and behavioral enhancements such as virtual GPU memory.

Developers familiar with Direct3D 9 will discover a series of functional enhancements and performance improvements in Direct3D 10, including:

  • The ability to process entire primitives in the new geometry-shader stage.
  • The ability to output pipeline-generated vertex data to memory using the stream-output stage.
  • Organization of pipeline state into 5 immutable state objects, enabling fast configuration of the pipeline.
  • Organization of shader constants into constant buffers, minimizing bandwidth overhead for supplying shader-constant data.
  • The ability to perform per-primitive material swapping and setup using a geometry shader.
  • New resource types (including texture arrays that can be indexed from shaders) and resource formats.
  • Increased generalization of resource access using a view.
  • Legacy hardware capability bits (caps) have been removed in favor of a rich set of guaranteed functionality, which targets Direct3D 10-class hardware (minimum).
  • Layered Runtime - The Direct3D 10 API is constructed with layers, starting with the basic functionality at the core and building optional and developer-assist functionality (debug, etc.) in outer layers.
  • Full HLSL integration - All Direct3D 10 shaders are written in HLSL and implemented with the common-shader core.
  • An increase in the number of render targets, textures, and samplers. There is also no shader length limit.
  • Integer and bitwise shader operations.
  • Readback of a depth/stencil surface or a multisampled resource, once it is no longer bound as a render target.
  • Multisampled alpha-to-coverage support.

There are additional behavioral differences that Direct3D 9 developers should also be aware of (see Direct3D 9 to Direct3D 10 Considerations).

Here is a list of Direct3D 9 features that either are no longer supported, or have been revised in Direct3D 10 (see Deprecated Features).

Programming Guide for Direct3D 10