为什么我得到这个错误" WebGL:INVALID_OPERATION:drawArrays:正面和背面模具设置不匹配"

时间:2016-07-07 15:38:55

标签: opengl-es webgl

我的代码如下。错误行是最后一行。

  gl.enable(gl.STENCIL_TEST);
  gl.stencilFuncSeparate(gl.FRONT, gl.ALWAYS, 1, 0xFF);
  gl.stencilOpSeparate(gl.FRONT, gl.KEEP, gl.KEEP, gl.REPLACE);
  gl.stencilMaskSeparate(gl.FRONT, 0xFF);
  gl.clear(gl.STENCIL_BUFFER_BIT);

  gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);//error line

1 个答案:

答案 0 :(得分:1)

来自the WebGL spec

  

6.10模板分离掩模和参考值

     

在WebGL API中,在模板操作中为前向和后向三角形指定不同的蒙版或参考值是非法的。如果出现以下情况,拨打drawArraysdrawElements会产生INVALID_OPERATION错误:

     
      
  • STENCIL_WRITEMASK != STENCIL_BACK_WRITEMASK(由stencilMaskSeparate指定,分别与face的FRONTBACK值相关联的掩码参数

  •   
  • STENCIL_VALUE_MASK != STENCIL_BACK_VALUE_MASK(由stencilFuncSeparate指定,分别与face的FRONTBACK值相关联的掩码参数

  •   
  • STENCIL_REF != STENCIL_BACK_REF(由stencilFuncSeparate指定,分别与face的FRONTBACK值相关联的ref参数

  •   

我将猜测必须添加it's a DirectX limit,以便可以在DirectX中运行WebGL