采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
请问在绘制的时候调了2次drawArrays画了两个点,而在定时器100ms后再次调用drawArrays为什么是清空后画了两个点而不是叠加成4个点?
这里利用的是 webgl 的缓冲清除,下一次绘制的时候会将之前的缓冲区内容进行清除,然后再进行绘制。如果不想清除缓冲区,可以这样设置 getContext('webgl', { preserveDrawingBuffer: true }) ,然后再运行,看到的就是不会清除的版本,会保留之前所有绘制过的点
那为什么for循环里可以绘制出多个,是有时间限制清除缓存吗?比如100ms内绘制另一个不会清楚之前的?
缓存清除时机是啥?一帧一次?
一帧一次
我查到的是:gl.drawArrays() 方法只会同步绘图,走完了js 主线程后,再次绘图时,就会从头再来。也就说,异步执行的drawArrays() 方法会把画布上的图像都刷掉。
gl.drawArrays(gl.POINT,0,1)方法和canvas 2d中的ctx.draw()方法不同。
ctx.draw真的像画画一样,一层一层的覆盖图像。
gl.drawArrays方法只会同步绘图,走完了JS主线程后,再次绘图时,就会从头再来。就是说,异步执行的gl.drawArrays方法会把画布上的图像都刷掉。
登录后可查看更多问答,登录/注册
前端的技术蓝海,涨薪好选择
832 46
662 13
544 11
511 11
588 7