From 1331dafe022f5cf1e230188ab66793296990f5f9 Mon Sep 17 00:00:00 2001 From: Lanius-collaris <55432068+Lanius-collaris@users.noreply.github.com> Date: Tue, 19 Apr 2022 08:34:07 +0800 Subject: [PATCH 1/2] Use position:absolute and transform If we can't update fast enough, the the canvas will scroll in sync with the HTML. https://webglfundamentals.org/webgl/lessons/webgl-multiple-views.html --- multi.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/multi.js b/multi.js index cd57926..451fffb 100644 --- a/multi.js +++ b/multi.js @@ -13,9 +13,9 @@ module.exports = function createMultiplexor (inputs) { var canvas = document.createElement('canvas') var canvasStyle = canvas.style - canvasStyle.position = 'fixed' + canvasStyle.position = 'absolute' canvasStyle.left = - canvasStyle.top = '0px' + canvasStyle.top = '0' canvasStyle.width = canvasStyle.height = '100%' canvasStyle['pointer-events'] = 'none' @@ -136,11 +136,19 @@ module.exports = function createMultiplexor (inputs) { (callbacks[i])(context) } } + + let lastScrollX=0,lastScrollY=0 regl.frame(function (context) { - regl.clear({ - color: [0, 0, 0, 0] - }) + let scrollX=window.scrollX,scrollY=window.scrollY + if(scrollX !== lastScrollX || scrollY !== lastScrollY) { + canvasStyle.transform = `translateX(${scrollX}px) translateY(${scrollY}px)` + regl.clear({ + color: [0, 0, 0, 0] + }) + lastScrollX = scrollX + lastScrollY = scrollY + } var width = window.innerWidth var height = window.innerHeight From 62d619d1f3302126697fcc7289f254bcf44fe632 Mon Sep 17 00:00:00 2001 From: Lanius-collaris <55432068+Lanius-collaris@users.noreply.github.com> Date: Wed, 20 Apr 2022 10:29:27 +0800 Subject: [PATCH 2/2] fix README code --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ade58b1..3b45cb0 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Lets you use a single [regl](http://regl.party) context to render to multiple wi ## Example ```javascript -const multiREGL = require('multi-regl') +const multiREGL = require('multi-regl')() const div1 = document.createElement('div') div1.style.width = '500px'