Is it possible to create a program that emulates OpenGL Hardware?

I have been thinking, and even was going to try out… but first I’ll ask. Is it possible to create an program that fully emulates an hardware OpenGL accelerator? I mean, using the processor to emulate the functions of a GPU and to use the system memory or a page file to emulate video memory without touching whatever videocard, OpenGL enabled or not, you use? It would be an rather interesting approach. Sure, you wouldn’t obtain the blistering framerates but it would be nice for those who cannot afford an 3D accelerator. It would be even cooler you specify how much video memory this “accelerator” would have (16, 32 or 64 MB), provided you have an substantial amount of system memory to move textures to the cpu.

I know that this sounds too ambitious, but i know there are a lot of people that would like to, at least test games or measure their system performance by using such application, plus it would be an alternative to have a high end graphics solution.

Now, is it possible to create such a program using the implemented instructions(MMX, 3DNow, SSE and SSE2, plus the upcoming SSE3), and be able to specify the video memory and all?

What do you think of such application? Does it already exists?

Please, if yu can provide some answers or clear doubts, do so. Thanks for your attention!

Does it already exists?
[/b]

It does exists, its called “software rendering” and you get it automaticaly when there is no 3d hardware. The prinicple of OpenGL is to emulate everything in software that is not hardware accelerated.

In case of Windows the software implemtation is rather unoptimized (and M$ has no intention to change that), but you can get mesa (www.mesa3d.org) which is an open source implementation of OpenGL.

And when you say “cant afford an 3d accelerator” you are aware that all gfx card for the last couple of years have some sort of 3d support?

If you are talking about a Pentium 90 or so, just plain forget it, the framerate would be 1fps (or less).

I know about software rendering and it’s function, I am talking about making a program that can effectively emulate 3D hardware using some relatively modern hardware (Pentium 3/Athlon). To do some kind of wrapper/driver that “tricks” the system into making it believe it has a hardware accelerator.

Microsoft’s implementation of software rendering is trash at best, so it would be nice to do such program.

About mesa, I have yet to try it but from what I did read, it is an alternative to what I would have intended.

Originally posted by Galcian:
[b]I know about software rendering and it’s function, I am talking about making a program that can effectively emulate 3D hardware using some relatively modern hardware (Pentium 3/Athlon). To do some kind of wrapper/driver that “tricks” the system into making it believe it has a hardware accelerator.

Microsoft’s implementation of software rendering is trash at best, so it would be nice to do such program.

About mesa, I have yet to try it but from what I did read, it is an alternative to what I would have intended.[/b]

Uh… Why?

Hardware is cheap.

Software rendering, no matter the system, will SUCK performance-wise.