所以目前我正在创建一个1000x1000的位图,它只需要花费大约0.3秒来调用Bitmap.SetPixel()函数。
我实际上只绘制了50%的像素,所以它更像是500,000调用setpixel。虽然这确实看起来像很多电话,但OTOH视频游戏却做得更多,推动了更多的像素(其中一些是按程序生成的)。
显然Bitmap.SetPixel没有针对速度进行优化,但是如果我需要每秒更新一次位图20-30次来获得不错的动画,这种方法会变慢,那么我的选择是什么?
答案 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();