Direct3D 10 Programming
Direct3D 10 (sometimes known as DirectX 10 - see note) is a graphics API from Microsoft that runs under Microsoft Vista or later operating systems. It has changed quite significantly from Direct3D 9. This section of the site will build over time to be a complete guide to writing Direct3D 10 applications.
Direct3D 10 Index
- Features - a list of the main features of Direct3D 10
- Development Environment - what you need to start to develop Direct3D applications
- Setup - notes on how to set up a Direct3D 10 application and entering a render loop.
Direct3D 10 Features
A list of the main features of Direct3D 10 and differences from Direct3D 9:
- Direct3D 10 runs on the Windows Vista platform only
- To support earlier Direct3D versions Vista also comes with DirectX 9.0Ex which is basically the normal Direct3D 9.0c runtime with changes to support Vista's new driver architecture (WDDM).
- Features shader model 4
- As well as improving on existing pixel and vertex shader it adds a new shader: a geometry shader. Where as vertex shaders can not add or remove vertices geometry shaders can and hence allow many more effects to be created.
- Does not use capabilities bits (caps) but instead defines a set of functions that a graphic card must support in order to be Direct3D 10 compatible
- This is quite a relief for game programmers who had, in the past, to query the capabilities of the graphic card at start up and turn on and off features depending on what was supported. On the other hand it is not so good for graphic card manufacturers as it makes it more difficult for them to add new 'unique' features to sell their cards over competitors cards.
- No more fixed function pipeline
- With Direct3D 9 you did not have to use shaders but instead could specify the make up of your vertex and get Direct3D to render things in a default way (fixed function). Direct3D 10 does away with this completely and requires shaders for all rendering.
- Other features
- Graphics memory paging - allows larger textures to be used and paged in and out of video RAM
- Graphics hardware threading improved via virtualisation of the hardware
- Much faster draw calls and no limit on number of primitives
Direct3D 10 Development Environment
You will need Windows Vista, the latest DirectX SDK and a machine with a graphics card capable of supporting Direct3D 10.
DirectX 10 or Direct3D 10?
I see a lot of people referring to DirectX 10 - this is not strictly correct as there is no DirectX 10 SDK instead there is a Direct3D 10 API. DirectX is an SDK made up of a number of APIs. It contains the APIs: Direct3D 9, Direct3D 10 and Direct3D 11 for graphics. DirectInput and XInput for user input. XACT, DirectSound and XAudio for sound manipulation. I do notice Microsoft sometimes referring to DirectX 10 when talking about the Vista runtime so perhaps DirectX 10 refers to the Vista runtime only? Anyway it is fairly unimportant but I will refer to Direct3D 10 in these notes.