
三帧策略
就是  三个帧 分为 1正在渲染的帧   2中间等待的帧  3正在被paint帧（paintEvent里面的）
帧上记录着各种信息 渲染耗时啊  paint耗时啊  改帧在 12 交换的等待时间  在 23的等待时间 32的等待时间 21的等待时间
这三个帧就是在这个圈子里面转

负反馈调节机制
在三帧策略里
根据1渲染耗时 + 21等待时间  可以计算出后台渲染的理论最大帧率
根据paint耗时 + 23 等待时间  可以计算 前台纯paint的理论最大帧率
和 用户手动设置的 最大帧率
这三个取最小值就是 实际后台要控制的帧率  并且渲染策略要记录当前是受三种策略哪一种频率限制、
同时有快渲染策略 当当前状态是 渲染受限  时候  那么渲染出来新的帧 就马上去检查新的状态有没有脏，脏的话就直接
执行这个快速渲染 而不是等待 实际后台要控制的帧率去更新
如果是 正在被paint的帧受限 那么当paint完成了就立即 自己发布postEvent 尽快在刷新 （当然同一时刻 qt事件循环 paint只能有一个）
只有当用户手动频率受限的时候才是 走综合的 后台计算出来的频率
这样均衡调度
在用户手动刷新策略 就自己判断实现就行

performance shower 会在 帧从  3到2 的时候 在2的状态 内部无锁的 给帧统计信息 然后自己开后台渲染 有一个快照机制
这样不形成观察者效应

其他的 图都是直接在后台渲染的




这俩图元的 各种方向  上下 左右



所有 plottable primitive 绘制模型要和 轴强绑定 而不是假定一定x轴y轴
所有图都不能假定轴的方向和流向
比如瀑布图 时间轴是横轴那么 瀑布图就是左右方向 具体是左还是右边 流向跟随时间轴的流向
         时间轴是纵轴那么 瀑布图就是上下方向 具体是上还是下 流向跟随时间轴的流向
频谱图 带时间轴的Audio_Frequency 也是一样




performance_shower 也是开线程渲染 然后独立频率只是展示快照  来破除观察者效应
curve图的 多线程渲染 无锁
瀑布图的 多线程 分tiles渲染 无锁
这三个需要后台渲染提供多线程能力








