Saving individual objects in a frame

Started by
3 comments, last by darkelf2k5 14 years, 9 months ago
I am wondering if there is any way to obtain and save all objects in a frame for a plugin-like system, meaning I don't have access to the source code. What I mean by this is to save all textures, render states, vertex shader constants, etc, for every DrawIndexedPrimitive and DrawPrimtive call. One way to do this would be to hook those functions and just save the data, including parameters. Then, it would be a matter of calling all of the gets to obtain things like the render state. Another idea would be to hook functions like SetRenderState, which would be much more efficient since it will save only what it needs to and not be forced to loop through all of the states and save the data for each one. Is there any proper way to do this? For anyone wondering, I am trying to create a screenshot, but instead of using pixels to capture the data, I want to use the 3d data itself so that it can later be manipulated. [Edited by - joyst1ck on June 21, 2009 1:11:57 PM]
Advertisement
bump
You can use PIX to get a list of functions called + the data itself. Then try to copy it out manually.
Or better, but more difficult, reimplement the main d3d dll functions so when called it dumps the passed data to a file or something. Lots of typing but with that you can basically get all the 3D info that is passed from the app. To save time, grab the function call list from PIX and implement only those you need.
There was also a 3rd party app that can do maybe stuff like this. Might worth a look.
http://www.sandboxsoftware.com.au/directx_explorer
Every time you implement a singleton, God kills a kitten. Please, think of the kittens!
A proxy dll would probably work, but I rather make as few changes as possible. Does anyone happen to know how PIX or DirectX explorer work internally?
With a proxy dll...
Every time you implement a singleton, God kills a kitten. Please, think of the kittens!

This topic is closed to new replies.

Advertisement