• Advertisement
Sign in to follow this  

Retrieving data from current D3D9 context

This topic is 2131 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi,
How can I get, say, projection matrix, from the current D3D9 context? By current I mean from a certain game, to which I am hooked through a DLL. Such thing is done i.e. in ENB Series, as far as I know.

Regards,
MK

Share this post


Link to post
Share on other sites
Advertisement
As far as I'm aware, there's a bit of extra magic going on whereupon shader constants are also examined and saved externally. Unfortunately there's no perfect way to do this w/ the programmable pipeline.

Share this post


Link to post
Share on other sites
With the fixed pipeline you can use IDirect3DDevice9::GetTransform, and there are other Gets for other states available. You need to be aware that if the device was originally created as a Pure Device, many of these Gets won't work, however - if it can be captured in a State Block you can't Get it.

With the programmable pipeline there is no concept of "state" for many things; even a matrix could come from many different souces: it could be passed along with other vertex attributes, constructed on the fly in a shader, or any number of other ways. TextureStageState doesn't exist and Sampler State could be set via an Effect rather than SetSamplerState calls.

One thing you could do - if you know that the program uses Effects - is create an ID3DXEffectStateManager and use that to capture settings. But you'll never really get the full picture with a program using shaders.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement