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
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:
aspectOptional-
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,aspectmặc định là"all".
mipLevelOptional-
Một số đại diện cho mức mip-map của texture để ghi dữ liệu vào. Nếu bỏ qua,
mipLevelmặc định là 0. originOptional-
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àzmặc định là 0 nếuoriginbị 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ặcDataView. 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ể:offsetOptional: Độ lệch tính bằng byte từ đầudatađến bắt đầu dữ liệu hình ảnh cần sao chép. Mặc định là 0.bytesPerRowOptional: 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.rowsPerImageOptional: 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 GPUValidationError và GPUQueue 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:
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:
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> |