4

WebGL 有一个clear清除整个表面的方法。清除特定矩形表面的最佳方法是什么?例如,我想将一个从 (50, 50) 开始的 100x100 像素框设置为全零 (ARGB 0, 0, 0, 0)。我现在能想到的就是用一个写入零的片段着色器绘制一个四边形。没有更简单的方法吗?

4

2 回答 2

17

您可以使用 SCISSOR 测试将清除(和一般渲染)限制为矩形。

// turn on the scissor test.
gl.enable(gl.SCISSOR_TEST);

// set the scissor rectangle.
gl.scissor(x, y, width, height);

// clear.
gl.clearColor(r, g, b, a);
gl.clear(gl.COLOR_BUFFER_BIT ...);

// turn off the scissor test so you can render like normal again.
gl.disable(gl.SCISSOR_TEST);
于 2012-07-18T16:10:27.433 回答
1

如果在 webgl 上下文中,视口之外的任何东西都将被绘制,剪刀之外的任何东西都将被剪裁并且根本不绘制!

于 2015-01-21T00:24:31.510 回答