关于ANDROID绘图的性能:DIRTY区大小是否会影响到显示性能?

kongkongsmile 2012-07-06 11:28:13
这个问题看似多此一问,在应用程序中,每次绘图面积尽可能小,当然可以提升性能,但是我的问题并不是这个意思.

绘图面积小,可以造成VIEW列表的结构简单,导致性能提升,但是很多情况下,VIEW列表无法简化.那么假设VIEW不变,DIRTY和绘图的关系怎样: dirty应该是最终调用了glScissor(dirty),那么应该swapBuffer时候只会修改dirty区域的内容,dirty区域越小,swapBuffer的执行越快才对.

但是实际测试并不是这样.swapBuffer和dirty的关系到底是怎样的? 求解.

...全文
151 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
kongkongsmile 2012-07-06
  • 打赏
  • 举报
回复
补充做过的测试:

在应用中直接使用postInvalidate(rect dirty)来绘图,dirty可以为任意面积的大小;
实际验证结果,使用硬加速,最终绘图使用HardwareRenderer:draw,结果每次执行时间都不同.执行时间也没有规律;

再尝试不在应用修改,应用每次都直接调用postInvalidate(整个屏幕的大小),在HardwareRenderer:draw的里面,直接赋值dirty的大小,检查drawDisplaylist和swapBuffer的执行时间,也没有发现规律.执行时间忽大忽小的.

最后的尝试,把绘图函数连续执行10遍,结果也不太理想,执行时间似乎和dirty有关,但是又似乎无关.得到的数据发现,如果dirty变了,绘图时间似乎又变化,但是并不是每次都这样.

80,492

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧