Should I write my own blitters?
If you are blitting a lot to system memory there you really can't take advantage of any hardware acceleration because there is none.
If you want to do alpha-blending, or if you want to do color conversion, you will really have to write your own blitter.
DirectDraw's Blit locks the surface before and unlocks after. So if you have a lot of blits you have that Lock/Unlock overhead
Also, it's not hard to write your own blitter.
- Splat
1- I guess I will learn something.
2- I am in the process of making an alpha blitter so might as well continue it
3- I guess eventually, I will have les problems porting.
Anyways, Splat i will continue writting my own blitter maybe you can help me optimize it later on!
Anyways i suggest you leave ddraw blitting as a option (after all if they have 32mb of memory and you can fit all your images in vram.......)
I agree that it would be stupid to forget the DirectDraw blitter, since those video memory -> video memory blits are just SO nice. Having a full-featured self-written software blitter, a damn-fast bare-bones DirectDraw software blitter, and a super-fast video-video mem hardware blitter gives you quite an arsenal when it comes to speeding up your game once you run into graphic bottlenecks.
- Splat
And I quote:
"you can't beat the speed of hardware period. Use the blitter."
So bassicly I will use the DX blitters for basic blitting, but for doing alpha, and additive blending I will have to go and write my own stuff.
Yep, its virtually impossible to blit in software faster than the hardware blitter can do it. I don't have any benchs of the performance difference though.
My project game is written purely with software draws to a system-memory buffer, which is blitted to the screen. This allows for very exchangable software drawing routines. (Have a draw pointer that can be set for normal, alpha, add, or whatever drawing style you wish)
Still, if you're going to be > 640x480 res, or doing alot of overdraw, hardware blit is a good idea, even if it makes you unportable.
-- Remnant
Depending on your game, you can avoid tons of locks/unlocks if you do it yourself. Also, since you know what format the data will be in, your blitter can be very specialized and fast.
If you only have a couple of blits per frame to do, then go ahead and use the ddraw blitter, but if you have more than 10 or so, I'd start to consider writing your own.