小编jan*_*ria的帖子

模板缓冲和遮罩如何工作?

我只想在特定区域绘制对象。请看一下这张图片以供参考
图片

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

stencil-buffer webgl webgl2

8
推荐指数
1
解决办法
3292
查看次数

标签 统计

stencil-buffer ×1

webgl ×1

webgl2 ×1