by Digby » Dec 4, 2002 @ 7:45pm
sbl,
You can most certainly create offscreen DirectDraw surfaces that reside in video memory that are not the same pixel color depth as the primary.
DirectDraw will not perform color-conversion during blits between dissimimlar surfaces though. Maybe that's what your limitation is?
Blacky,
I think you're slightly confused. BltBatch is used to submit a list of blit operations to the hardware through a single API call. The API was designed to support alpha blits in the same manner as Blt was (see DDBLTFX members). The reason none of this is supported is because hardware vendors didn't feel it was worth putting 2D alpha blending capability in their GPUs. They threw all of their time and effort into hardware acceleration of 3D operations instead.
Today, the overwhelming majority of game developers that want to do 2D effects in their game do this with the 3D chip and draw viewport-aligned texture-mapped quads instead of blitting bitmaps. You get things like alpha blending, rotation, scaling, and batching all for free. Plus, if your game uses 3D and you try to use DDraw to blit some type of HUD or UI on the screen you will cause your performance to drop because it will have to flush the 3D pipeline (stalling) before the blits can execute. It's far more efficient to do everything as 3D which won't result in a stall of the GPU.