如题,小白,代码如下:这种写法的优化空间
查看更多
1、批量绘制。尝试将多个扇形组合成较少的绘制调用。比如退化三角形技术的应用2、shader去直接绘制。跨过顶点,直接操作顶点或者片元。3、降低精度...比如扇形的边缘点不要追求太光滑,拟合程度低一些。4、VAO。就是将顶点或者颜色放到统一数组里面,其本质还是尽量减少调用draw函数。我的一点见解...
发布 问题
分享 好友
手机 浏览
回到 顶部
补充一下具体如何去修改,能建设三角面片数:
1、目前应用的drawArrays可以采用drawElements,同时外加
webg1.TRIANGLE_FAN
的方法。这样可以最大限度的建设position
点的个数,但是需要你在for 循环部分,建立索引缓冲区。2、目前你封装了
drawFans
函数绘制扇形。每绘制一个扇形就需要调用一次drawarrays
函数。会将数据重新从内存读取到显存,这个过程非常消耗时间。所以有两个建议:1、同时将数据在js里面生成,最后统一传输到webgl缓冲区里面,完成绘制。2、绘制过程中采用退化三角形,因为要绘制扇形,每组扇形绘制完成后,在绘制第二扇形之前,外加2-3个点,组成额外的三角形,但是该三角形并没有实际的作用,故成为退化三角形。建议采用退化三角形,建设drawarrays方法的调取次数。此外,十万个扇形确实会耗费资源,为了最大建设开支,其实更本在于一次性绘制一个扇形组,并不是一次次、一个个去绘制。