Am 2017-10-31 um 14:11 schrieb Fabian Maurer:
Why do you need a proxy IDirect3D8 implementation in dx8vb? Is there any difference between dx8vb and d3d8?
The interfaces in dx8vb are different interfaces, with different GUID and sometimes slightly different method definitions and behavior. I don't know why they did it that way, but I don't see another way than to have a wrapper for all of these. If there is an easier way, I'd love to hear it.
Hmm, in this case a wrapper is probably the best choice...
Regarding the GUIDs, some tests would be great, e.g. showing that d3d8 does not support them, but dx8vb does.
You'll have a mess on your hands with various getter functions. Luckily the IDirect3DResource8::{Get/Set}PrivateData methods are helpful for textures, surfaces, swapchains and buffers, and in d3d8 shaders are DWORD handles and vertex declarations don't exist. So you shouldn't have to maintain your own stateblocks.
D3DSPD_IUNKNOWN is handy for being notified of the destruction of a resource. You probably do have to keep your own refcounting and test if it works the same way as in real d3d8.