Reputation: 3089
So currently I'm creating a 1000x1000 bitmap and it's spending about .3 seconds simply calling the Bitmap.SetPixel() function.
I'm actually only drawing probably 50% of the pixels so it's more like 500,000 call to setpixel. While that does seem like a lot of calls, OTOH video games are do alot more and push many many more pixels (some of them procedureally generated).
Obviously Bitmap.SetPixel isn't optimized for speed, but if I needed to update a bitmap 20-30 times a second to get decent animation, this is way to slow, so what are my options?
Upvotes: 4
Views: 6810
Reputation: 21722
Bob Powell has an excellent tutorial on accessing pixel maps directly in memory.
Upvotes: 6
Reputation: 5108
I can recommend FastBitmap:
FastBitmap fb = new FastBitmap(b);
fb.LockImage();
...
fb.SetPixel(x, y, Color.Red);
...
fb.UnlockImage();
Upvotes: 1
Reputation: 21811
Modern blockbuster video games do all the pixel setting behind the scenes in hardware; they give the hardware a buffer of geometries and the highly parallelized hardware does all the math. OpenGL and DirectX are APIs for talking to the hardware.
Search gamedev.net for some tutorials.
Upvotes: 1