GPURenderPassEncoder: setScissorRect() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

注意:此功能在 Web Workers 中可用。

GPURenderPassEncoder 接口的 setScissorRect() 方法用于设置光栅化阶段使用的剪裁矩形。转换成视口坐标后,落入剪裁矩形外的任何片段都将被丢弃。

语法

js
setScissorRect(x, y, width, height)

参数

x

一个数字,表示剪裁矩形的最小 X 值(以像素为单位)。

y

一个数字,表示剪裁矩形的最小 Y 值(以像素为单位)。

width

一个数字,表示剪裁矩形的宽度(以像素为单位)。

height

一个数字,表示剪裁矩形的高度(以像素为单位)。

注意: 如果没有调用 setScissorRect(),则每个渲染通道的默认值为 (0, 0, attachment width, attachment height)

返回值

无 (Undefined)。

验证

调用 setViewport() 时必须满足以下标准,否则会生成 GPUValidationError,并且 GPURenderPassEncoder 会失效

  • x + width 小于或等于渲染通道的渲染附件的宽度(见下文说明)。
  • y + height 小于或等于渲染通道的渲染附件的高度(见下文说明)。

注意: 请参阅 GPUCommandEncoder.beginRenderPass() 描述符中指定的颜色和深度/模板附件;宽度和高度基于它们 view 源自的 GPUTexture 的宽度和高度。

示例

基本代码片段

在典型的画布渲染中,以下代码可用于丢弃画布左上角四分之一区域之外的任何渲染

js
passEncoder.setScissorRect(0, 0, canvas.width / 2, canvas.height / 2);

规范

规范
WebGPU
# dom-gpurenderpassencoder-setscissorrect

浏览器兼容性

另见