Fondamentalement, ce que je veux faire est de forcer une application source fermée qui utilise un Direct3D9Ex
contexte (CreateD3D9Ex)
mais un simple dispositif « non-ex » (IDirect3DDevice9)
utiliser un Direct3DDevice9Ex
à la place. J'ai placé un proxy dll dans le répertoire de l'application qui fonctionne généralement bien. Maintenant, je suis en train de rediriger l'appel pour CreateDevice
à CreateDeviceEx
de la dll d'origine, puis juste retourner un pointeur "non-ex" (de sorte que l'application utilise un périphérique "Ex" sans le savoir). À mon avis, cela devrait fonctionner parce que le périphérique "Ex" implémente toutes les méthodes que contient le périphérique "non-ex" - mais apparemment il doit y avoir une différence, car la seule chose qui est rendue si le "Ex" caché périphérique est en cours d'utilisation est le curseur.force application source fermée à utiliser Direct3DDevice9Ex au lieu de dispositif non Ex
Q: Quelqu'un pourrait-il me dire ce que je fais de mal ou donner des conseils?
Contexte
J'utilise une application D3D9
dont je veux copier la mémoire tampon de profondeur. Malheureusement, son format est D24S8
ce qui implique qu'une copie directe est impossible.
J'ai donc décidé d'essayer s'il est possible de créer une texture profondeur/pochoir à un niveau et d'accéder à cette texture avec les méthodes D3D10/D3D11
qui sont en fait capables de copier les surfaces profondeur/pochoir. Toutefois, seuls D3D9Ex
périphériques sont capables de créer des textures avec des poignées partagées ...
Annexe
En raison du fait Direct3D9Ex ne supporte pas la piscine gérée, il est impossible. Merci @VuVirt
Ok, je n'ai pas pensé à cette partie. Eh bien, le temps de la prochaine approche;) Merci quand même. – Apollo13