为了支持不同大小的屏幕分辨率,我使用SurfaceView以编程方式缩放了我的android游戏应用程序中的位图。我通过使用drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)
方法执行它。我看到一个名为createScaledBitmap的Bitmap
方法,该方法可以创建从现有位图缩放的新位图。他们之间有性能差异吗?drawBitmap和createScaledBitmap之间的性能差异
0
A
回答
2
是的,有。他们做不同的事情。 createScaledBitmap获取一个位图并在内存中创建一个新的缩放副本。它不会将它放在画布上,这是一个新的位图对象,稍后可以将其绘制到画布上。 drawBitmap将位图绘制到画布上(可以由位图,表面或屏幕支持),缩放它,应用来自绘制对象的效果,尊重剪辑区域等。
除非你不使用drawBitmap实际上是想把它绘制到画布上 - 仅仅用于缩放就是效率低下的。如果您需要绘制并缩放它 - 如果您需要反复缩放并且内存不是问题,请首先使用createScaledBitmap,然后绘制缩放后的位图。如果您不需要再次绘制或内存问题,请在绘制时使用drawBitmap进行缩放。
2
创建缩放位图不会绘制位图。它提供了在绘图之前包含选项的方法。例如,您可以与在那里将被绘制使用不同的插值技术根据大小,旋转等原始图像的:
What does the filter parameter to createScaledBitmap do?
所以,如果你不满意drawBitmap的结果,您可以尝试使用缩放选项来改进位图。 drawBitmap使用“自动”缩放,但不指定使用的内容。
与性能特别相关,createScaledBitmap使用本地方法“nativeCreate”,drawBitmap使用“native_drawBitmap” - 因此它会因本地方法的平台实现而有所不同。无论如何,在缩放后您需要将位图绘制到画布上,因此无论采用哪种方式都需要“drawBitmap”,即使位图已经缩放,也不太可能提高性能。但是,如果您没有绘制它,那么使用“drawBitmap”没有意义,因为它会自动调整尺寸并使用资源执行绘制。
相关问题
- 1. 安卓drawBitmap 5倍的性能差异
- 2. jconn2和jconn3之间的性能差异
- 3. .exists之间的性能差异?和.where.present?
- 4. to_char和to_date之间的性能差异
- 5. Swazoo和Komanche之间的性能差异?
- 6. VARCHAR2与NUMBER之间的性能差异
- 7. 评估板之间的性能差异
- 8. x86和x86_64中的float和double之间的性能差异
- 9. 功能和事件之间的AS3性能差异
- 10. MeteorJS - 功能之间的差异()和()=>
- 11. PCIe和QPI之间的性能和架构差异是什么?
- 12. 什么是self.property的使用和性能之间的差异
- 13. 基于性能的零和空字符串之间的差异
- 14. Android和iOS上的SQLite之间的性能差异
- 15. 新的MyFragment()和MyFragment.newInstance()之间的性能差异?
- 16. Ubuntu和Macports版本的PHP之间奇怪的性能差异
- 17. /和/ **之间的差异
- 18. PHP之间的差异()和[]
- 19. '//'和'///'之间的C++差异
- 20. VBA:&和+之间的差异
- 21. 之间的差异和::: ++
- 22. 差异功能Rails和2之间3
- 23. 32位和64位SWT之间的性能差异是什么?
- 24. spring javaconfig,xml config和annotations之间的性能差异
- 25. HttpContext用户和线程用户之间的性能差异
- 26. ifort和gfortran之间令人费解的性能差异
- 27. 使用“:not”和“.not()”选择器之间的性能差异?
- 28. Stax和DOM解析之间的性能差异
- 29. ArrayList构造函数之间的性能和学习差异
- 30. ArrayName.First()和ArrayName [0]之间的性能差异
既然你在绘制一个'SurfaceView',你有没有考虑设置一个固定的大小并让硬件进行缩放?请参阅http://android-developers.blogspot.com/2013/09/using-hardware-scaler-for-performance.html – fadden
我向Grafika添加了一个示例 - 请参阅https://“硬件缩放器练习器” github.com/google/grafika。 – fadden