Javascript 多次调用WebGL抽屉元素会导致不正确的呈现

Javascript 多次调用WebGL抽屉元素会导致不正确的呈现,javascript,firefox,webgl,Javascript,Firefox,Webgl,我的问题是:为什么相同的示例WebGL代码会在不同的平台/浏览器上产生不同的输出 在Windows(而不是Mac)上的Firefox 30.0(以及最新版本32)中,在渲染点时调用多个抽屉元素会导致不正确的渲染: 左上:Firefox(不正确)。 右上方:镀铬(正确) 我通过复制和改编以下示例代码,重新创建了此问题(首次在我无法共享的软件项目中遇到): 然后,为了最大程度地简化,我修改了示例代码,删除了所有动画,并渲染了三个点而不是一个立方体,对抽屉元素进行了三次调用,并使用统一的颜色更改了每

我的问题是:为什么相同的示例WebGL代码会在不同的平台/浏览器上产生不同的输出

在Windows(而不是Mac)上的Firefox 30.0(以及最新版本32)中,在渲染点时调用多个抽屉元素会导致不正确的渲染:

左上:Firefox(不正确)。 右上方:镀铬(正确)

我通过复制和改编以下示例代码,重新创建了此问题(首次在我无法共享的软件项目中遇到):

然后,为了最大程度地简化,我修改了示例代码,删除了所有动画,并渲染了三个点而不是一个立方体,对抽屉元素进行了三次调用,并使用统一的颜色更改了每个点的颜色

  gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVerticesIndexBuffer);
  setMatrixUniforms();
  gl.uniform4f(colorUniformLoc,1.0,0.0,0.0,1.0);
  /*****
  gl.drawElements(gl.POINTS, 36, gl.UNSIGNED_SHORT, 0); //commented out, from original example.
  *****/
  gl.drawElements(gl.POINTS, 1, gl.UNSIGNED_SHORT, 0);
  gl.uniform4f(colorUniformLoc,1.0,1.0,0.0,1.0);
  gl.drawElements(gl.POINTS, 1, gl.UNSIGNED_SHORT, 2);
  gl.uniform4f(colorUniformLoc,0.0,0.0,1.0,1.0);
  gl.drawElements(gl.POINTS, 1, gl.UNSIGNED_SHORT, 4);
渲染的三个点应在一条直线上:

var vertices = [
// Front face
-1.0, -1.0,  1.0,
-1.5, -1.0,  1.0,
-2.0, -1.0,  1.0, //more verts not shown...
我已经通过一个公用的google drive文件夹为任何觉得自己非常有帮助的人分享了完整的源代码:

不幸的是,Firefox30是我们的客户使用的平台(不可协商),因此更换浏览器并不是一件容易的事


谢谢你的阅读

。我想除了在使用Firefox时不在
gl.draurements
中使用偏移量之外,没有简单的解决方法(问题可能只存在于
,因此您可以使用四边形作为另一种解决方案来绘制点。

感谢您的快速回答,也感谢您报告错误!我在之前搜索bugzilla时找不到任何类似的内容。我将与我们的客户讨论升级到FF33+,或者继续我的解决方法d、 这可能类似于使用多个顶点缓冲区,进行排序,以便调用DrawArray而不是DrawElement。