Reply 20 of 34, by Scali
They are two different things.
DirectDraw and Direct3D are APIs. More specifically, they are hardware abstraction layers (HALs).
DirectDraw abstracts a simple 2D-oriented video card. Direct3D originally started life as an extension to DirectDraw for video cards that had 3D acceleration features (that means, if you wanted to use Direct3D, you first had to set up a DirectDraw environment, and then query your DirectDraw surface for Direct3D capabilities. So when you were using Direct3D, you were always using DirectDraw as well).
With DirectX 8, DirectDraw was no longer updated, and instead Direct3D became a standalone API.
Software rendering is the process of rendering a screen entirely 'in software', as in: with the CPU.
With a modern OS, you'll need some kind of API to access your display hardware for any kind of rendering, including software rendering.
Traditionally, under Windows you would use DirectDraw for both software rendering and Direct3D (in fact, Direct3D itself also offers software rendering).
However, as mentioned, Direct3D became a standalone API with DirectX 8, so you could write your own software renderer with Direct3D 8 or newer, instead of DirectDraw, if you wanted to.