- The server is comprised of four "engines" specifiable on the
command line:
- A GDI based shadow framebuffer server "-engine 1"
- A DirectDraw3 based shadow framebuffer server "-engine 2"
- A DirectDraw4 based shadow framebuffer server "-engine 3" This
server is special becuase it doesn't have to lock and unlock the
shadow framebuffer for blitting. This server seems to have the
highest performance.
- A DirectDraw3 based primary framebuffer server "-engine 4" Engine
4 has the worst performance and is not as complete as the other
servers, and it probably never will be complete, as the performance
doesn't warrant the effort.
- Each server can be run in two modes:
- Standard windowed mode, this is the default
- Full screen mode, accessible via the "-fullscreen" parameter
- All engines, except engine 4, clip their output to their display
window.
- All engines, except engine 4, redraw areas of their display window
that has been covered and reexposed by another application's
window.
- All engines should automatically detect the color masks
- Engines 2, 3, and 4 change the video mode to the mode specified on
the command line. However, these engines do not currently verify that
the mode is valid, nor do they fallback on another mode, they simple
exit if the mode cannot be set.
- Engines 1, 2, and 3 can be minimized and moved all over the screen
without crashing.
- A bug was fixed in the window repainting code that caused an
infinite loop. I lost track of whether I ever released a version that
contained that bug; but it is fixed now, so who cares? :)
- All engines allow you to specify modes that will hang your
computer. I'm not kidding... be careful what engine and mode you
specify.
- Engine 4 will freeze Window 95/98/Me in its tracks, don't try to
run it on those versions of Windows. Besides, engines 1, 2, and 3 are
much faster than engine 4, so you have no reason to try running engine
4.
- Engine 3 only works when you have DirectX 6+ installed.
- Mouse wheel support, just in case you missed the last couple of
announcements :)
Thanks to John Fortin for pointing me in the direction of a client
memory DirectDraw shadow surface, which allowed the non locking server
to be created; also thanks for the example code.
As a side note, the Shadow Framebuffer Test name is now a misnomer,
as the server includes an engine that writes directly to the primary
framebuffer, without the need for the shadow fb code.
|