我有一个小型绘图应用程序,每次鼠标移动时,新坐标都会被输入到 WebGL 中的缓冲区中。我假设当我调用 gl.drawArrays 时,我只需要绘制新点,而不是旧点,因为它们是之前渲染的。然而,即使我没有调用 gl.clear,旧的点也会消失。为什么会出现这种情况?
// every time feed new points
gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer)
gl.bufferSubData(gl.ARRAY_BUFFER, index, new Float32Array(points))
// only draw new Points
gl.drawArrays(gl.POINTS, lastDrawnPoints, newPoints.length / 2)
因为你的假设是错误的,所以事情并不是这样的。 3D 场景不是黑板。
您必须在每一帧渲染整个场景。