关于drawArrays调用得到不同结果的疑问

来源:3-2 多缓冲区和数据偏移

Mr陈序猿

2024-01-31

示例1:点击鼠标绘制点的时候,没有用points数组的情况下,其执行的代码是:

gl.vertexAttrib2f(aPosition, clickX, clickY)
gl.drawArrays(gl.POINTS, 0, 1);

结果1:每次鼠标点击,都会执行上述代码,如果点击多次,相当于循环执行了多次上述代码,但是最终只绘制一个点

示例2:使用了points情况下,其执行代码是

for (let i = 0; i < points.length; i++) {
      gl.vertexAttrib2f(aPosition, points[i].clickX, points[i].clickY)
      gl.drawArrays(gl.POINTS, 0, 1);
}

结果2:每次鼠标点击的点都会被绘制出来

疑问:示例1与示例2代码执行流程上面都是先调用vertexAttrib2f然后再调用drawArrays,但绘制的结果却不一样?

写回答

1回答

yancy

2024-02-05

应该有其他的话题我回答过。多次点击的时候,每次都是不同的绘制是因为不是同一帧绘制的,而数组循环则是在同一帧里进行的,

0
1
Mr陈序猿
老师,如何区分是同一帧还是不同帧
2024-03-15
共1条回复

WebGL+Three.js 入门与实战,系统学习 Web3D 技术

前端的技术蓝海,涨薪好选择

1081 学习 · 294 问题

查看课程