2 个三角形(图片 A)只是在四边形(图片 B)内的区域中绘制,因此结果看起来会被剪裁(图片 C)。
首先,我只是在模板缓冲区中绘制四边形。
gl.stencilOp(gl.KEEP, gl.KEEP, gl.REPLACE);
gl.stencilFunc(gl.ALWAYS, 1, 0xff);
gl.stencilMask(0xff);
gl.depthMask(false);
gl.colorMask(false, false, false, false);
drawQuads();
Run Code Online (Sandbox Code Playgroud)
根据我的理解,现在模板缓冲区在四边形区域的值为 1。然后,绘制三角形。
gl.stencilFunc(gl.EQUAL, 1, 0xff);
gl.stencilMask(0x00);
gl.depthMask(true);
gl.colorMask(true, true, true, true);
drawTriagles();
Run Code Online (Sandbox Code Playgroud)
我原以为结果会像图片 (C) 那样,但事实并非如此。我做错了什么?
请在这里找到完整的代码https://jsfiddle.net/z11zhf01/1