I would like to use a DirectX proxy dll to intercept (and possibly optimize) the graphics calls being made by normal PC games. I am going to "screen cast" a game with ffmpeg or something similar and then stream it to a handheld, so a lot of things should be skipped to reach a a reasonable balance of encoding time on the server side, as well as keep it reasonably low-bandwith

adaptive things like:

entire frame skipping skipping shader phases reducing texture size nearing the far view plane (resp. culling more objects than usually) are on my TODO list. I already checked out a few implementations of DirectX proxies (even the DirectX SDK has one - PIX), but most of them are used for logging and debugging purposes, and not really for runtime hacking and quality degradation.

I was curious what other existing implementations there could eb out there. I guess, I am not the only one who came with the idea of "screwing up" the graphics quality post-factum, in order to increase better overal performance.


1 Answer 1


This might not be the answer you're looking for but if you're going to screencast you don't need to touch DirectX at all. Just capture a video of the game and then transcode it and send it to the mobile device on the fly. The only thing you might need to do is to capture at a lower resolution than the game is playing at or you can do this during the transcoding (smaller video resolutions save bandwith). So KISS as always (Keep it simple stupid).

As for the DirectX proxy idea, I think this going to be extremely difficult without fully knowing the driver and DirectX API. A lot of these commands might not make sense when inspecting them one by one but skipping anyone of them might have a catastrophic effect and the result can differ extremely per game. Note that almost all the DirectX commands change some sort of state on which the game might be dependent. For example if you reduce the size of a texture this could either totally screw with shadows and lights or make that billboard appear slightly blurrier, it's hard to tell which one of these two things will happen by just seeing the command "LOAD TEXTURE".

Also note that a lot of the optimizations you might be thinking about are already done in the GPU driver as best as possible. Maybe try tinkering with the advanced options of yours, sometimes you can greatly improve performance that way.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .