User:Eddman
- August 27, 2025: Although generally correct, this guide isn't final and needs certain details.
Direct3D versions
DirectDraw versions
DirectDraw is an obsolete 2D rendering API from Microsoft that was used by game developers mainly before the release of Direct3D 8. To determine the exact version of DirectDraw being used by a game, a more in-depth investigation needs to be performed by tracing the API calls with dgVoodoo 2 (see Determine the Direct3D/DirectDraw version for older games).
Determine the Direct3D/DirectDraw version for older games
This section is applicable for DirectDraw and Direct3D 7 or older. Although these methods can be used for Direct3D 8-9, using a tool such as MSI Afterburner is recommended.
| Identify the render API being used: |
|---|
|
Start by identifying the loaded DLL files while the game is running: (using e.g. Process Explorer)
Notes
If tracing the API calls are necessary, perform the following:
Direct3D version | Interfaces
-----------------|---------------------------------------
2/3 | Direct3D
| Direct3DDevice
.........................................................
5 | Direct3D2
| Direct3D2::CreateDevice
|
| Direct3DDevice2
| Direct3DDevice2::SetCurrentViewport
| Direct3DDevice2::GetCurrentViewport
| Direct3DDevice2::SetRenderTarget
| Direct3DDevice2::GetRenderTarget
| Direct3DDevice2::Begin
| Direct3DDevice2::BeginIndexed
| Direct3DDevice2::Vertex
| Direct3DDevice2::Index
| Direct3DDevice2::End
| Direct3DDevice2::GetRenderState
| Direct3DDevice2::SetRenderState
| Direct3DDevice2::GetLightState
| Direct3DDevice2::SetLightState
| Direct3DDevice2::SetTransform
| Direct3DDevice2::GetTransform
| Direct3DDevice2::MultiplyTransform
| Direct3DDevice2::DrawPrimitive
| Direct3DDevice2::DrawIndexedPrimitive
| Direct3DDevice2::SetClipStatus
| Direct3DDevice2::GetClipStatus
|
| Direct3DRampDevice
| Direct3DRGBDevice
| Direct3DHALDevice
| Direct3DMMXDevice
| Direct3DMaterial2
| Direct3DTexture2
| Direct3DViewport2
.........................................................
6 | Direct3D3
| Direct3D3::CreateVertexBuffer
| Direct3D3::EnumZBufferFormats
| Direct3D3::EvictManagedTextures
|
| Direct3DDevice3
| Direct3DDevice3::DrawPrimitiveStrided
| Direct3DDevice3::DrawIndexedPrimitiveStrided
| Direct3DDevice3::DrawPrimitiveVB
| Direct3DDevice3::DrawIndexedPrimitiveVB
| Direct3DDevice3::ComputeSphereVisibility
| Direct3DDevice3::GetTexture
| Direct3DDevice3::SetTexture
| Direct3DDevice3::GetTextureStageState
| Direct3DDevice3::SetTextureStageState
| Direct3DDevice3::ValidateDevice
|
| Direct3DRefDevice
| Direct3DNullDevice
| Direct3DMaterial3
| Direct3DViewport3
| Direct3DVertexBuffer
.........................................................
7 | Direct3D7
| Direct3DDevice7
DirectDraw version | Interfaces
-------------------|-------------------------------------
1 | DirectDraw
| DirectDrawSurface
.........................................................
2/3 | DirectDraw2
| DirectDraw2::GetAvailableVidMem
|
| DirectDrawSurface2
| DirectDrawSurface2::GetDDInterface
| DirectDrawSurface2::PageLock
| DirectDrawSurface2::PageUnlock
.........................................................
5 | DirectDrawSurface3
| DirectDrawSurface3::SetSurfaceDesc
|
| DirectDrawColorControl
.........................................................
6 | DirectDraw4
| DirectDraw4::GetSurfaceFromDC
| DirectDraw4::RestoreAllSurfaces
| DirectDraw4::TestCooperativeLevel
| DirectDraw4::GetDeviceIdentifier
|
| DirectDrawSurface4
| DirectDrawSurface4::SetPrivateData
| DirectDrawSurface4::GetPrivateData
| DirectDrawSurface4::FreePrivateData
| DirectDrawSurface4::GetUniquenessValue
| DirectDrawSurface4::ChangeUniquenessValue
.........................................................
7 | DirectDraw7
| DirectDraw7::StartModeTest
| DirectDraw7::EvaluateMode
|
| DirectDrawSurface7
| DirectDrawSurface7::SetPriority
| DirectDrawSurface7::GetPriority
| DirectDrawSurface7::SetLOD
| DirectDrawSurface7::GetLOD
Notes
|