GPUDevice: createBuffer() Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
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 der GPUDevice
Schnittstelle erstellt einen GPUBuffer
, in dem rohe Daten für die Verwendung in GPU-Operationen gespeichert werden.
Syntax
createBuffer(descriptor)
Parameter
descriptor
-
Ein Objekt, das die folgenden Eigenschaften enthält:
label
Optional-
Ein String, der ein Label bereitstellt, das verwendet werden kann, um das Objekt zu identifizieren, zum Beispiel in
GPUError
-Nachrichten oder Konsolenwarnungen. mappedAtCreation
Optional-
Ein Boolean. Wenn auf
true
gesetzt, wird der Puffer bei der Erstellung abgebildet, was bedeutet, dass Sie die Werte im Puffer sofort durch Aufrufen vonGPUBuffer.getMappedRange()
festlegen können. Der Standardwert istfalse
.Beachten Sie, dass es gültig ist,
mappedAtCreation: true
festzulegen, damit Sie die Anfangsdaten des Puffers festlegen können, auch wenn dieGPUBufferUsage.MAP_READ
oderGPUBufferUsage.MAP_WRITE
Nutzungsflaggen nicht gesetzt sind. size
-
Eine Zahl, die die Größe des Puffers in Bytes darstellt.
usage
-
Die bitweisen Flaggen, die die erlaubten Verwendungen für den
GPUBuffer
darstellen. Die möglichen Werte sind in derGPUBuffer.usage
Wertetabelle zu finden.Beachten Sie, dass mehrere mögliche Verwendungen angegeben werden können, indem Werte mit bitwise OR getrennt werden, zum Beispiel:
GPUBufferUsage.COPY_SRC | GPUBufferUsage.MAP_WRITE
.
Rückgabewert
Eine Instanz des GPUBuffer
Objekts.
Validierung
Die folgenden Kriterien müssen beim Aufruf von createBuffer()
erfüllt sein, andernfalls wird ein GPUValidationError
erzeugt und ein ungültiges GPUBuffer
Objekt zurückgegeben:
- Eine gültige
usage
ist angegeben. GPUBufferUsage.MAP_READ
ist angegeben, und keine weiteren Flags außerGPUBufferUsage.COPY_DST
sind angegeben.GPUBufferUsage.MAP_WRITE
ist angegeben, und keine weiteren Flags außerGPUBufferUsage.COPY_SRC
sind angegeben.mappedAtCreation: true
ist angegeben, und die angegebenesize
ist ein Vielfaches von 4.
Hinweis:
Wenn die Pufferzuweisung ohne spezifische Nebeneffekte fehlschlägt, wird ein GPUOutOfMemoryError
Objekt erzeugt.
Beispiele
In unserem grundlegenden Compute-Demo erstellen wir einen Ausgabepuffer, um die Berechnungen der GPU zu lesen, und einen Staging-Puffer, der für den Zugriff durch JavaScript abgebildet werden soll.
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
Siehe auch
- Die WebGPU API