webgl 重绘立方体,但我不想清除其他的

webgl redraw cube but I don't want to clear others

我成功地通过 webgl 绘制了多纹理立方体。 但是,我应该与其他 webgl 上下文共享 canvas。 如果我在其他 webgl 上下文绘制的对象上绘制这个立方体,我如何绘制我的立方体并重新绘制、移动、...而没有其他上下文清楚的其他对象。

function start() {
   ...
if (gl) {
        gl.clearColor(0.0, 0.0, 0.0, 0.0);  
        gl.clearDepth(1.0);                 
        gl.enable(gl.DEPTH_TEST);           
        gl.depthFunc(gl.LEQUAL);            
   ...
}

function drawScene() {
  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
  ...
}

您不能与另一个 WebGLRenderingContext 共享 canvas(至少从 2016/08/05 开始不能)。

一般来说,在 WebGL 中,您需要每帧重绘所有内容。 WebGL is a rasterization library 不是场景图。它没有立方体的概念。它只是渲染像素。如果你只想移动一堆立方体中的一个立方体,你需要保留一些数据结构(如数组或树)来跟踪所有立方体的位置、方向等。然后更新一个或多个立方体的位置全部画出来。

您会发现几乎所有 WebGL 程序都这样做