这个问题看似多此一问,在应用程序中,每次绘图面积尽可能小,当然可以提升性能,但是我的问题并不是这个意思.绘图面积小,可以造成VIEW列表的结构简单,导致性能提升,但是很多情况下,VIEW列表无法简化.那么假设VIEW不变,DIRTY和绘图的关系怎样: dirty应该是最终调用了glScissor(dirty),那么应该swapBuffer时候只会修改dirty区域的内容,dirty区域越小,swapBuffer的执行越快才对.但是实际测试并不是这样.swapBuffer和dirty的关系到底是怎样的? 求解.

解决方案 »

  1.   

    补充做过的测试:在应用中直接使用postInvalidate(rect dirty)来绘图,dirty可以为任意面积的大小;
    实际验证结果,使用硬加速,最终绘图使用HardwareRenderer:draw,结果每次执行时间都不同.执行时间也没有规律;再尝试不在应用修改,应用每次都直接调用postInvalidate(整个屏幕的大小),在HardwareRenderer:draw的里面,直接赋值dirty的大小,检查drawDisplaylist和swapBuffer的执行时间,也没有发现规律.执行时间忽大忽小的.最后的尝试,把绘图函数连续执行10遍,结果也不太理想,执行时间似乎和dirty有关,但是又似乎无关.得到的数据发现,如果dirty变了,绘图时间似乎又变化,但是并不是每次都这样.