我在做个小游戏,支持按对话框大小缩放,动态改变背景大小。
使用40ms每帧,也就是1s画25次,使用的是settimer。使用了双缓冲画图,问题是,当画的图比较小时候,没问题,但一旦全屏
贴背景位图,CPU 直接飙到50!!!!!!why?效率如此低?
请问各位前辈解决办法是啥?我不了解directX或GDI+. 但我仅仅是使用了StrentchBlt,BitBlt贴大尺寸图(全屏图,资源不大)为何效率会如此低?
使用40ms每帧,也就是1s画25次,使用的是settimer。使用了双缓冲画图,问题是,当画的图比较小时候,没问题,但一旦全屏
贴背景位图,CPU 直接飙到50!!!!!!why?效率如此低?
请问各位前辈解决办法是啥?我不了解directX或GDI+. 但我仅仅是使用了StrentchBlt,BitBlt贴大尺寸图(全屏图,资源不大)为何效率会如此低?
如果实在要全部刷新,建议你用OpenGL,贴图效率很不错的
如果用GDI+的话,建议用屏幕最大化作为基准进行帧率测试(硬件平台一致),然后在此基础上:
1.尽量减少刷新中临时New或者建立变量,包括内存DC(设为类或全局变量)
2.尽量减少贴图等的大小,只要够用够清晰即可,图片源文件尽量与贴图大小一致,防止贴图中的放大或者缩小操作,透明的PNG类图形尽量拆分成多个能够表示的小PNG,不要直接使用一整个大的PNG
3.减少区域操作,例如合并,交叉,联合等,而使用算法来实现
4.能够不全屏刷新背景的地方尽量使用局部刷新。
5.窗口外多余的绘图部分使用SetClip先前去除,减小有效绘图区域。