GPURenderPassEncoder: phương thức setViewport()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Note: This feature is available in Web Workers.

Phương thức setViewport() của giao diện GPURenderPassEncoder đặt viewport được sử dụng trong giai đoạn rasterization để ánh xạ tuyến tính từ tọa độ thiết bị chuẩn hóa sang tọa độ viewport.

Cú pháp

js
setViewport(x, y, width, height, minDepth, maxDepth)

Tham số

x

Một số biểu diễn giá trị X tối thiểu của viewport, tính bằng pixel.

y

Một số biểu diễn giá trị Y tối thiểu của viewport, tính bằng pixel.

width

Một số biểu diễn chiều rộng của viewport, tính bằng pixel.

height

Một số biểu diễn chiều cao của viewport, tính bằng pixel.

minDepth

Một số biểu diễn giá trị độ sâu tối thiểu của viewport.

maxDepth

Một số biểu diễn giá trị độ sâu tối đa của viewport.

Note: Nếu không có lệnh gọi setViewport() nào được thực hiện, các giá trị mặc định là (0, 0, chiều rộng tệp đính kèm, chiều cao tệp đính kèm, 0, 1) cho mỗi lần thực thi kết xuất.

Giá trị trả về

Không có (Undefined).

Xác thực

Các tiêu chí sau phải được đáp ứng khi gọi setViewport(), nếu không GPUValidationError sẽ được tạo ra và GPURenderPassEncoder sẽ không hợp lệ:

  • x, y, widthheight đều lớn hơn hoặc bằng 0.
  • x + width nhỏ hơn hoặc bằng chiều rộng của các tệp đính kèm kết xuất của lần thực thi kết xuất (xem ghi chú bên dưới).
  • y + height nhỏ hơn hoặc bằng chiều cao của các tệp đính kèm kết xuất của lần thực thi kết xuất (xem ghi chú bên dưới).
  • minDepthmaxDepth đều nằm trong khoảng 0.0 đến 1.0 (bao gồm).
  • minDepth nhỏ hơn maxDepth.

Note: Xem các tệp đính kèm màu sắc và độ sâu/stencil được chỉ định trong descriptor của GPUCommandEncoder.beginRenderPass(); chiều rộng và chiều cao dựa trên GPUTexture mà các view của chúng xuất phát.

Ví dụ

Đoạn mã cơ bản

Trong một lần kết xuất canvas thông thường, có thể sử dụng đoạn mã sau để giảm một nửa chiều rộng và chiều cao của đồ họa được kết xuất:

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

Trong ngữ cảnh

Trong ví dụ WebGPU Samples reversedZ example, setViewport được sử dụng nhiều lần để đặt viewport cho các lần thực thi kết xuất khác nhau. Nghiên cứu danh sách mã ví dụ để có đầy đủ ngữ cảnh.

Ví dụ:

js
// …

colorPass.setViewport(
  (canvas.width * m) / 2,
  0,
  canvas.width / 2,
  canvas.height,
  0,
  1,
);

// …

Thông số kỹ thuật

Specification
WebGPU
# dom-gpurenderpassencoder-setviewport

Tương thích trình duyệt

Xem thêm