Forgive me for being sceptical, but i don't see how writing my own software renderer teaches me to use 3D APIs more efficiently.
One of the biggest issues with writing efficient 3d engines is keeping both the CPU and the GPU busy all the time. eg. prevent pipeline stalls in the 3d hardware. Also state management is very important because state changes can be expensive when doing hardware accelerated 3d. Last but not least, resource management. When to use video memory, when to use AGP memory.
Those issues are non-existent in a software renderer.
Pipeline stalls do not happen, when your only using the CPU.
State changes are (nearly) free, so state management is also not that important when using a software renderer.
Obviously the memory issues are also non-existent in a software renderer as you'll only use system memory.
Off course there are a couple of things that you'll learn from it. Things that are normally done "behind the scenes" when working with 3d APIs.
For example:
- clipping
- rasterizing
- interpolating (to calculate input value for fragments)
But these things don't affect the performance as much as the other things i mentioned at the top of my post.
Edit: forgot to mention one thing,
Writing your own software renderer IS alot of fun.
It can be very rewarding to see it doing its job when it finnished.
So if you have the time, just go for it...
Edit2: eeeeek... just realized this thread came straight out of the grave... lol
[edited by - Direct4D on May 28, 2004 12:23:13 AM] [edited by - Direct4D on May 28, 2004 12:24:39 AM]