GPUQueue: writeTexture() method

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 writeTexture() của giao diện GPUQueue ghi một nguồn dữ liệu được cung cấp vào một GPUTexture được chỉ định.

Đây là hàm tiện ích, cung cấp giải pháp thay thế cho việc thiết lập dữ liệu texture thông qua ánh xạ buffer và sao chép buffer sang texture. Nó cho phép tác nhân người dùng xác định cách sao chép dữ liệu hiệu quả nhất.

Cú pháp

js
writeTexture(destination, data, dataLayout, size)

Tham số

destination

Một đối tượng xác định subresource texture và gốc để ghi nguồn dữ liệu vào, có thể có các thuộc tính sau:

aspect Optional

Một giá trị liệt kê xác định các khía cạnh nào của texture sẽ được ghi dữ liệu vào. Các giá trị có thể:

  • "all": Tất cả các khía cạnh có sẵn của định dạng texture sẽ được ghi vào.
  • "depth-only": Chỉ khía cạnh depth của định dạng depth-or-stencil sẽ được ghi vào.
  • "stencil-only": Chỉ khía cạnh stencil của định dạng depth-or-stencil sẽ được ghi vào. Nếu bỏ qua, aspect mặc định là "all".
mipLevel Optional

Một số đại diện cho mức mip-map của texture để ghi dữ liệu vào. Nếu bỏ qua, mipLevel mặc định là 0.

origin Optional

Một đối tượng hoặc mảng chỉ định gốc của việc sao chép. Các giá trị x, y, và z mặc định là 0 nếu origin bị bỏ qua.

texture

Một đối tượng GPUTexture đại diện cho texture cần ghi dữ liệu vào.

data

Một đối tượng đại diện cho nguồn dữ liệu cần ghi vào GPUTexture. Có thể là ArrayBuffer, TypedArray, hoặc DataView.

dataLayout

Một đối tượng xác định bố cục của nội dung chứa trong data. Các giá trị có thể:

  • offset Optional: Độ lệch tính bằng byte từ đầu data đến bắt đầu dữ liệu hình ảnh cần sao chép. Mặc định là 0.
  • bytesPerRow Optional: Một số đại diện cho stride tính bằng byte giữa bắt đầu mỗi hàng block và hàng block tiếp theo.
  • rowsPerImage Optional: Số hàng block trên mỗi ảnh đơn của texture.
size

Một đối tượng hoặc mảng chỉ định phạm vi của việc sao chép, tức là góc xa của vùng texture cần ghi dữ liệu vào.

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 writeTexture(), nếu không sẽ tạo ra GPUValidationErrorGPUQueue trở nên không hợp lệ.

Ví dụ

Trong Efficiently rendering glTF models, một hàm được định nghĩa để tạo texture màu đồng nhất:

js
function createSolidColorTexture(r, g, b, a) {
  const data = new Uint8Array([r * 255, g * 255, b * 255, a * 255]);
  const texture = device.createTexture({
    size: { width: 1, height: 1 },
    format: "rgba8unorm",
    usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST,
  });
  device.queue.writeTexture({ texture }, data, {}, { width: 1, height: 1 });
  return texture;
}

Hàm này có thể được dùng để định nghĩa các texture chuẩn cho thư viện vật liệu:

js
const opaqueWhiteTexture = createSolidColorTexture(1, 1, 1, 1);
const transparentBlackTexture = createSolidColorTexture(0, 0, 0, 0);
const defaultNormalTexture = createSolidColorTexture(0.5, 0.5, 1, 1);

Thông số kỹ thuật

Specification
WebGPU
# dom-gpuqueue-writetexture

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

Xem thêm