MCPcopy Create free account
hub / github.com/crosire/d3d8to9

github.com/crosire/d3d8to9 @v1.15.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.15.1 ↗ · + Follow
299 symbols 405 edges 17 files 0 documented · 0% updated 3mo agov1.15.1 · 2026-03-07★ 1,20819 open issues

Browse by type

Functions 258 Types & classes 41
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

d3d8to9

GitHub Actions Status AppVeyor Status

This is a pseudo-driver module that intends to improve compatibility and stability in games using Direct3D 8 for rendering by converting all API calls and low-level shaders to equivalent Direct3D 9 ones. By that it also opens those games to new possibilities from proven modding tools written for Direct3D 9, including ReShade.

Note that d3d8to9 does exact translation from Direct3D 8 to Direct3D 9 only. But on recent versions of Windows, depending on system settings, GPU drivers and other factors, rendering behavior in Direct3D 9 using d3d8to9 may differ from native Direct3D 8. One common issue is VSync getting enabled with d3d8to9, even though it appears inactive in native Direct3D 8, despite the application enabling it. This may give an inaccurate impression of lower performance with d3d8to9, while it actually follows what the application requests. If you want to tweak this behavior, such as forcing VSync to be off, it is recommended to use a separate tool, such as dxwrapper, which uses d3d8to9 internally for API call conversion, but adds additional configuration opportunities.

Building

You'll need Visual Studio 2013 or higher to build d3d8to9. It is recommended to install the old standalone DirectX end-user runtime, which is required for the D3DX libraries used for disassembling and assembling the shaders.

A quick overview of what some of the source code files contain:

File Description
d3d8to9.cpp Definition of the main D3D8 entry point Direct3DCreate8
d3d8to9_base.cpp Implementation of the IDirect3D8 interface, including device creation
d3d8to9_device.cpp Implementation of the IDirect3DDevice8 interface, including shader conversion
d3d8types.hpp Declaration of all used D3D8 types one would otherwise find in d3d8.h
interface_query.hpp Table to map D3D9 interface addresses to their matching D3D8 implementations

Contributing

Any contributions to the project are welcomed, it's recommended to use GitHub pull requests.

A big shout-out to all the existing contributors who worked on improving compatibility, especially elishacloud!

License

All source code in this repository is licensed under a BSD 2-clause license.

Core symbols most depended-on inside this repo

Shape

Method 241
Class 41
Function 17

Languages

C++100%

Modules by API surface

source/d3d8to9_device.cpp103 symbols
source/d3d8to9_texture.cpp30 symbols
source/d3d8to9.hpp30 symbols
source/interface_query.hpp28 symbols
source/d3d8to9_base.cpp18 symbols
source/d3d8to9_vertex_buffer.cpp16 symbols
source/d3d8to9_index_buffer.cpp16 symbols
source/d3d8to9_volume.cpp13 symbols
source/d3d8to9_surface.cpp13 symbols
source/d3d8types.cpp10 symbols
source/d3d8to9_swap_chain.cpp7 symbols
source/d3d8types.hpp6 symbols

For agents

$ claude mcp add d3d8to9 \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page