2D キャンバスを画面上のキャンバスとして使用し、注釈を描画する前に WebGL キャンバスを更新するときに WebGL キャンバスを描画することができます。
drawWebGLStuff(webGLCtx);
// Copy image data of WebGL canvas to 2D canvas.
// This should be done right after WebGL rendering,
// unless preserveDrawingBuffer: true is passed during WebGL context creation,
// since WebGL will swap buffers by default, leaving no image in the drawing buffer,
// which is what we want to copy.
ctx2D.drawImage(webGLCanvas, 0, 0);
drawAnnotations(ctx2D);
(注釈は、形状のリストから各フレームをレンダリングするか、別のオフスクリーン キャンバスに描画してから、WebGL キャンバスと同様にメイン (画面上の) キャンバスに描画することができます。)
または、ページ上にキャンバスを単純に重ねて、絶対配置とz-index
次のようにすることもできます。
<div style="position: relative;">
<canvas id="layer1" width="100" height="100"
style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
<canvas id="layer2" width="100" height="100"
style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
</div>