I am messing around with Direct3D - modifying vtable entries for a device object so that my functions get called instead the provided ones. I noticed that despite this mostly working, at points something restores the IDirect3DDevice9
vtable, for example ID3DXFont::DrawText
- the very first call; ulterior ones don't touch it.
Why does this happen?