使用相同的着色器显示两个 WebGL 动画

Show two WebGL animations with the same shader

我需要在页面上使用 WebGL 显示两个动画。我需要实例化多个着色器,还是有办法重用一个着色器?他们使用相同的程序(因此不是完全不同的动画)。他们都需要对鼠标事件做出反应。

像这样

window.onload = function() {
    main('canvas1');
    main('canvas2');
}

function main(element) {
  // Get A WebGL context
  var canvas = document.getElementById(element);
  var gl = getWebGLContext(canvas);
  if (!gl) {
    return;
  }

  // setup GLSL program
  vertexShader = createShaderFromScriptElement(gl, "2d-vertex-shader");
  fragmentShader = createShaderFromScriptElement(gl, "2d-fragment-shader");
  program = createProgram(gl, [vertexShader, fragmentShader]);
  gl.useProgram(program);
  ...
}

我不明白贬义词。我问了一个关于 webgl 的理论问题,而不是特定的代码。

我运行 这段代码有效。所以现在我需要知道的是我是否可以在两者上使用鼠标事件。如果这不起作用,我会感到惊讶。

其他人已经回答了这个问题: Is it possible to have two WebGL contexts on the same page?

WebGL 无法在多个上下文中共享资源。但是你可以用它自己的 gl 变量创建一个对象,然后在页面上有多个上下文。我现在看到的唯一限制是,不知何故它对系统来说是密集型的,它不允许超过 16 个并发上下文。