去年在公司搞WebGL的研究和大数据量图结构数据渲染的开发,获得了不少经验和心得。
由此还通过公司申请了两个专利。下面是对这两个专利的简单介绍:
1. 对象选择方法及装置
专利号: CN201811151411
通常情况下使用鼠标对画布上对象选择,是通过遍历画布上所有对象,然后将点击位置的坐标与遍历对象的坐标进行比较实现的。
上述方法实现简单,当画布上对象数目较少时,没有太大问题。但当对象超过十万甚至更多时,便会产生严重的性能问题。即使该问题可以通过四叉树遍历技术进行缓解,但是性能也不能得到本质的提升。
该专利使用的方法是将画布渲染两次,一次渲染至屏幕上,一次渲染至FrameBuffer上。第二次渲染的每个点实际上是对象ID编码的颜色信息。当鼠标点击屏幕时,只要取出相应坐标位置第二次渲染的颜色信息,通过反编码记得得到选择对象的ID信息。
2. 动态内存管理方法及装置
专利号: CN201811151466
本专利主要介绍的是在WebGL编程时,高效管理JavaScript内存的方法。
众所周知,JavaScript中的Array类型实际上是个链表结构。链表结构,最大的问题,就是快速检索。此外根据不同JavaScript引擎的实现,Array在大量增删数据时也存在性能问题。
本专利的功能是抛弃使用Array类型,转而使用更原生的TypedArray管理应用内存。且在使用内存时,预先分配固定长度的内存,再根据需要动态扩展。
经实践检验,该方案比传统的Array管理内存方法,效率提高了两个数量级以上。
更新:
貌似第三个关于图布局算法的专利也申请通过了,专利号:CN111061921B
更新日期:2021年1月16日