GPUCommandEncoder: copyBufferToBuffer() Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die copyBufferToBuffer()
Methode der GPUCommandEncoder
Schnittstelle codiert einen Befehl, der Daten von einem GPUBuffer
zu einem anderen kopiert.
Syntax
copyBufferToBuffer(source, sourceOffset, destination, destinationOffset, size)
Parameter
source
-
Der
GPUBuffer
, von dem kopiert wird. sourceOffset
-
Der Versatz in Bytes im
source
, ab dem begonnen wird zu kopieren. destination
-
Der
GPUBuffer
, zu dem kopiert wird. destinationOffset
-
Der Versatz in Bytes im
destination
, ab dem begonnen wird zu kopieren. size
-
Die Anzahl der zu kopierenden Bytes.
Rückgabewert
Keiner (Undefined
).
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenn copyBufferToBuffer()
aufgerufen wird, andernfalls wird ein GPUValidationError
erzeugt und der GPUCommandEncoder
wird ungültig:
- Die
GPUBuffer.usage
dessource
enthält dasGPUBufferUsage.COPY_SRC
Flag. - Die
GPUBuffer.usage
desdestination
enthält dasGPUBufferUsage.COPY_DST
Flag. size
,sourceOffset
unddestinationOffset
sind alle Vielfache von 4.- Die
GPUBuffer.size
dessource
ist größer oder gleichsourceOffset
+size
. - Die
GPUBuffer.size
desdestination
ist größer oder gleichdestinationOffset
+size
. source
unddestination
sind unterschiedlicheGPUBuffer
(es ist nicht möglich, aus demselben Puffer zu kopieren und gleichzeitig in ihn zu kopieren).
Beispiele
In unserem Basic Compute Demo verwenden wir copyBufferToBuffer()
, um den Inhalt unseres output
Puffers in den stagingBuffer
zu kopieren.
// ...
// Create an output buffer to read GPU calculations to, and a staging buffer to be mapped for JavaScript access
const output = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
});
const stagingBuffer = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,
});
// ...
// Create GPUCommandEncoder to encode commands to issue to the GPU
const commandEncoder = device.createCommandEncoder();
// ...
// Copy output buffer to staging buffer
commandEncoder.copyBufferToBuffer(
output,
0, // Source offset
stagingBuffer,
0, // Destination offset
BUFFER_SIZE,
);
// ...
Spezifikationen
Specification |
---|
WebGPU # dom-gpucommandencoder-copybuffertobuffer |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | server | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
copyBufferToBuffer |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support
- Partial support
- Partial support
- In development. Supported in a pre-release version.
- In development. Supported in a pre-release version.
- No support
- No support
- Experimental. Expect behavior to change in the future.
- See implementation notes.
- User must explicitly enable this feature.
- Has more compatibility info.
Siehe auch
- Die WebGPU API