GPUDevice: createBuffer() 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.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die createBuffer()
-Methode des GPUDevice
-Interfaces erstellt einen GPUBuffer
zur Speicherung von Rohdaten, die in GPU-Operationen verwendet werden sollen.
Syntax
createBuffer(descriptor)
Parameter
descriptor
-
Ein Objekt, das die folgenden Eigenschaften enthält:
label
Optional-
Ein String, der ein Label bereitstellt, das zur Identifizierung des Objekts verwendet werden kann, beispielsweise in
GPUError
-Meldungen oder Konsolenwarnungen. mappedAtCreation
Optional-
Ein Boolean. Wenn auf
true
gesetzt, wird der Buffer bei der Erstellung abgebildet, was bedeutet, dass Sie die Werte im Buffer sofort durch Aufruf vonGPUBuffer.getMappedRange()
setzen können. Der Standardwert istfalse
.Beachten Sie, dass es gültig ist,
mappedAtCreation: true
zu setzen, um die anfänglichen Daten des Buffers festzulegen, selbst wenn dieGPUBufferUsage.MAP_READ
- oderGPUBufferUsage.MAP_WRITE
-Nutzungskennzeichen nicht gesetzt sind. size
-
Eine Zahl, die die Größe des Buffers in Bytes darstellt.
usage
-
Die bitweisen Flags, die die erlaubten Verwendungen für den
GPUBuffer
darstellen. Die möglichen Werte sind in derGPUBuffer.usage
-Wertetabelle aufgeführt.Beachten Sie, dass mehrere mögliche Verwendungen durch Trennzeichen mit Pipe-Symbolen angegeben werden können, zum Beispiel:
jsusage: GPUBufferUsage.COPY_SRC | GPUBufferUsage.MAP_WRITE;
Rückgabewert
Eine Instanz des GPUBuffer
-Objekts.
Validierung
Folgende Kriterien müssen erfüllt sein, wenn createBuffer()
aufgerufen wird, ansonsten wird ein GPUValidationError
erzeugt und ein ungültiges GPUBuffer
-Objekt zurückgegeben:
- Ein gültiger
usage
wird angegeben. GPUBufferUsage.MAP_READ
wird angegeben, und keine zusätzlichen Flags werden angegeben, außerGPUBufferUsage.COPY_DST
.GPUBufferUsage.MAP_WRITE
wird angegeben, und keine zusätzlichen Flags werden angegeben, außerGPUBufferUsage.COPY_SRC
.mappedAtCreation: true
ist angegeben, und die angegebenesize
ist ein Vielfaches von 4.
Hinweis:
Wenn die Speicherzuweisung des Buffers ohne spezifische Nebeneffekte fehlschlägt, wird ein GPUOutOfMemoryError
-Objekt erzeugt.
Beispiele
In unserem grundlegenden Berechnungs-Demo erstellen wir einen Ausgabepuffer, um GPU-Berechnungen zu lesen, und einen Staging-Puffer, der für den Zugriff durch JavaScript abgebildet wird.
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,
});
Spezifikationen
Specification |
---|
WebGPU # dom-gpudevice-createbuffer |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Die WebGPU API