Bitmap.SetPixel(x,y, Color) 太慢
目前我正在创建一个 1000x1000 位图,仅调用 Bitmap.SetPixel() 函数就花费了大约 0.3 秒。
实际上,我只绘制了大约 50% 的像素,因此更像是对 setpixel 的 500,000 次调用。虽然这看起来确实需要很多调用,但 OTOH 游戏要做的事情要多得多,并推送更多的像素(其中一些是程序生成的)。
显然 Bitmap.SetPixel 没有针对速度进行优化,但如果我需要每秒更新位图 20-30 次才能获得像样的动画,这会降低速度,那么我的选择是什么?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
Bob Powell 有一个很棒的教程直接访问内存中的像素图。
Bob Powell has an excellent tutorial on accessing pixel maps directly in memory.
FastPixel?: http://www.codeproject.com/KB/GDI-plus /FastPixel.aspx
FastPixel?: http://www.codeproject.com/KB/GDI-plus/FastPixel.aspx
现代热门视频游戏的所有像素设置均由硬件在幕后完成;它们为硬件提供了几何形状的缓冲区,并且高度并行化的硬件完成了所有的数学运算。 OpenGL 和 DirectX 是用于与硬件通信的 API。
在 gamedev.net 中搜索一些教程。
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.
我可以推荐 FastBitmap:
I can recommend FastBitmap: