J'essaie d'obtenir un effet comme le fait le programme Fraps, qui est une superposition sur le dessus d'un jeu, et pour ce faire, j'accrocher la fonction IDirect3DDevice9::EndScene
et le rendu avant d'appeler la fonction d'origine. Cependant, quand je rends des choses, cela gâche les effets que le jeu a déjà dessinés, et ne se dessine pas correctement. Mon crochet ressembleDirect3D hook overlay
HRESULT __stdcall endscene_hook(IDirect3DDevice9* id3d_device) {
if (pGameOverlay) {
pGameOverlay->Render();
}
return endscene_orig(dev);
}
lequelR pGameOverlay
est juste un pointeur vers une méthode de classe dont Render
dessine juste des choses à l'appareil, il a été mis en place avec précédemment (non représenté). Y a-t-il autre chose que je devrais faire?
J'ai lu quelque part que Fraps accroche réellement la méthode Present
, au lieu de EndScene
. Est-ce correct, et si oui, pourquoi? Et ne pouvez-vous pas seulement avoir une paire BeginScene
/EndScene
entre les appels à Present
?
Juste comme une vérification de base que l'accrochage lui-même ne cause pas le désordre: quand vous ommitez le pGameOverlay-> Render(), tout semble-t-il OK? – Suma
@Suma Oui, tout rend normalement quand je ne rends pas mes propres trucs. –