Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

The idea is to take old games without modifying them, but have the graphics card apply a series of filters to their output before sending them to the monitor. A very crude example would be to take a game that has a resolution of 640x480 and do:

  • Increase the resolution to 1280x960
  • Apply a blur (low pass filter)
  • Apply a sharpen (1 + high pass filter)

These steps may not necessarily be the best to improve the visuals of an old game, but there are a lot of techniques that are well-known in image processing for this purpose.

The question is, do the (NVidia) graphics cards give the ability to load a program that modifies the screen before sending it to the monitor? If so, how are they called and what terminology should I use to search? I would be comfortable with doing the programming myself if this ability is part of a library.

Also, would the solution be different between Windows and Linux? If so, either is fine, since most of the games are probably runnable by wine.

share|improve this question
    
Note: I'm not entirely sure if this question fits gamedev better or stackoverflow. Feel free to migrate. –  Visa is Racism Oct 8 '12 at 8:42
add comment

2 Answers

This is non-trivial. Your best chance of success will not be by accessing the graphics card directly (unless you like re-writing hardware drivers for ever card you want to support), but rather, the rendering API that does all that for you; DirectX or OpenGL.

You'll need to hook (this is the term you'll want to search with) the API's interface with your own instructions.

http://stackoverflow.com/questions/2649702/c-sharp-hook-overlay-a-directx-game

http://stackoverflow.com/questions/10048333/capture-visual-output-of-a-directx-application-even-in-background

share|improve this answer
add comment

The way I would do this process is create a method that captures an off-screen (as supposed to the main image the user views); this is called page-flipping, then use that image to apply the image manipulation techniques of your programming language of choice (resize, blur and sharpen).

If you perform the aforementioned process with the least number of resources calls to your system, the speed should stay the same as if this image manipulations never happened.

These are the tutorials for what you want to do in Java language:

http://docs.oracle.com/javase/tutorial/2d/images/drawimage.html

(check the running program at the bottom of the page in the previous link)

http://docs.oracle.com/javase/tutorial/extra/fullscreen/doublebuf.html

They might not be useful if you don't write in Java, but the terminology will help you do your research. :)

share|improve this answer
    
I think you missed the question entirely. –  Cypher Oct 8 '12 at 23:55
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.