GPUDevice: createBuffer()-Methode
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
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 Schnittstelle GPUDevice erstellt einen GPUBuffer, in dem Rohdaten für GPU-Operationen gespeichert werden.
Syntax
createBuffer(descriptor)
Parameter
descriptor-
Ein Objekt mit den folgenden Eigenschaften:
labelOptional-
Eine Zeichenfolge mit einer Bezeichnung, anhand derer das Objekt beispielsweise in
GPUError-Meldungen oder Konsolenwarnungen identifiziert werden kann. mappedAtCreationOptional-
Ein boolescher Wert. Wenn er auf
truegesetzt ist, wird der Buffer bei der Erstellung gemappt. Dadurch können Sie die Werte im Buffer sofort durch Aufrufen vonGPUBuffer.getMappedRange()festlegen. Der Standardwert istfalse.Sie können
mappedAtCreation: truesetzen, um die Anfangsdaten des Buffers festzulegen, auch wenn die Usage-FlagsGPUBufferUsage.MAP_READoderGPUBufferUsage.MAP_WRITEnicht gesetzt sind. size-
Eine Zahl, die die Größe des Buffers in Bytes angibt. Wenn
mappedAtCreationauftruegesetzt ist, muss sie ein Vielfaches von4sein. usage-
Die bitweisen Flags, die die zulässigen Verwendungen des
GPUBufferangeben. Die möglichen Werte finden Sie in der Wertetabelle fürGPUBuffer.usage.Sie können mehrere zulässige Verwendungen angeben, indem Sie die Werte mit einem bitweisen OR verknüpfen, zum Beispiel:
GPUBufferUsage.COPY_SRC | GPUBufferUsage.MAP_WRITE.
Rückgabewert
Eine GPUBuffer-Objektinstanz.
Ausnahmen
RangeError-
Wird ausgelöst, wenn
mappedAtCreationauftruegesetzt ist und die angegebenesizekein Vielfaches von4ist.
Validierung
Beim Aufrufen von createBuffer() müssen die folgenden Kriterien erfüllt sein. Andernfalls wird ein GPUValidationError erzeugt und ein ungültiges GPUBuffer-Objekt zurückgegeben:
- Ein gültiger
usage-Wert wird angegeben. - Wenn
GPUBufferUsage.MAP_READangegeben ist, sind außerGPUBufferUsage.COPY_DSTkeine weiteren Flags angegeben. - Wenn
GPUBufferUsage.MAP_WRITEangegeben ist, sind außerGPUBufferUsage.COPY_SRCkeine weiteren Flags angegeben.
Hinweis:
Wenn die Zuweisung von Speicher für den Buffer ohne bestimmte Nebeneffekte fehlschlägt, wird ein GPUOutOfMemoryError-Objekt erzeugt.
Beispiele
In unserer einfachen Compute-Demo erstellen wir einen Ausgabebuffer, in den Ergebnisse von GPU-Berechnungen geschrieben werden, und einen Staging-Buffer, der für den Zugriff durch JavaScript gemappt 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
| Spezifikation |
|---|
| WebGPU> # dom-gpudevice-createbuffer> |
Browser-Kompatibilität
Siehe auch
- Die WebGPU-API