Bitmap.SetPixel(x,y,Color)太慢了

时间:2009-09-29 00:30:46

标签: .net bitmap

所以目前我正在创建一个1000x1000的位图,它只需要花费大约0.3秒来调用Bitmap.SetPixel()函数。

我实际上只绘制了50%的像素,所以它更像是500,000调用setpixel。虽然这确实看起来像很多电话,但OTOH视频游戏却做得更多,推动了更多的像素(其中一些是按程序生成的)。

显然Bitmap.SetPixel没有针对速度进行优化,但是如果我需要每秒更新一次位图20-30次来获得不错的动画,这种方法会变慢,那么我的选择是什么?

4 个答案:

答案 0 :(得分:6)

鲍勃鲍威尔在内存中直接访问像素地图方面有一个很好的tutorial

答案 1 :(得分:3)

答案 2 :(得分:1)

现代大片视频游戏在硬件背后完成所有像素设置;它们为硬件提供了几何缓冲,高度并行化的硬件可以完成所有数学运算。 OpenGL和DirectX是用于与硬件通信的API。

搜索gamedev.net以获取一些教程。

答案 3 :(得分:1)

我可以推荐FastBitmap

FastBitmap fb = new FastBitmap(b);
fb.LockImage();

...

fb.SetPixel(x, y, Color.Red);

...

fb.UnlockImage();