Signatur
Beschreibung
openal_buffer_destroy() gibt einen zuvor mit openal_buffer_create() erstellten OpenAL-Puffer-Ressource wieder frei. Dabei werden die vom Puffer belegten Ressourcen sowohl auf PHP- als auch auf OpenAL-Ebene freigegeben.
OpenAL-Puffer dienen dazu, Audio-Rohdaten (PCM-Samples) zu speichern, die anschließend einer oder mehreren Quellen (Sources) zugewiesen und abgespielt werden können. Wird ein Puffer nicht mehr benötigt, sollte er explizit mit dieser Funktion zerstört werden, um Speicherlecks zu vermeiden.
Wichtig: Bevor ein Puffer zerstört werden kann, muss er von allen Quellen getrennt sein, die ihn momentan verwenden. Andernfalls schlägt die Funktion fehl. Trennen Sie die Quelle vorher mit openal_source_set() oder stoppen Sie die Quelle und setzen Sie den zugewiesenen Puffer auf 0.
Diese Funktion gehört zur OpenAL-Erweiterung (ext/openal) von PHP, die als experimentell gilt und auf dem OpenAL-Standard für 3D-Audio basiert.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $buffer Pflicht | resource | Eine gültige OpenAL-Puffer-Ressource, wie sie von openal_buffer_create() zurückgegeben wurde. |
Rückgabewert
true zurück, wenn der Puffer erfolgreich zerstört wurde, andernfalls false (z. B. wenn der Puffer noch einer aktiven Quelle zugewiesen ist oder die Ressource ungültig ist).Beispiele
Einfaches Erstellen und Zerstören eines OpenAL-Puffers
<?php
// OpenAL-Gerät und -Kontext öffnen
$device = openal_device_open();
$context = openal_context_create($device);
openal_context_current($context);
// Puffer erstellen
$buffer = openal_buffer_create();
// Audiodaten in den Puffer laden (Mono, 16 Bit, 44100 Hz)
// $pcmData enthält die rohen PCM-Bytes
// openal_buffer_data($buffer, AL_FORMAT_MONO16, $pcmData, 44100);
// Puffer nach Verwendung zerstören
$result = openal_buffer_destroy($buffer);
if ($result) {
echo "Puffer erfolgreich zerstört.";
} else {
echo "Fehler beim Zerstören des Puffers.";
}
// Kontext und Gerät schließen
openal_context_destroy($context);
openal_device_close($device);
?>
Puffer von Quelle trennen, bevor er zerstört wird
<?php
$device = openal_device_open();
$context = openal_context_create($device);
openal_context_current($context);
$buffer = openal_buffer_create();
$source = openal_source_create();
// Puffer der Quelle zuweisen
openal_source_set($source, AL_BUFFER, $buffer);
// Quelle stoppen und Puffer-Zuweisung aufheben, bevor der Puffer zerstört wird
openal_source_stop($source);
openal_source_set($source, AL_BUFFER, 0);
// Jetzt kann der Puffer sicher zerstört werden
if (openal_buffer_destroy($buffer)) {
echo "Puffer erfolgreich freigegeben.";
}
openal_source_destroy($source);
openal_context_destroy($context);
openal_device_close($device);
?>
// Wichtig · Fallstricke
Experimentelle Erweiterung: Die OpenAL-Erweiterung für PHP gilt als experimentell. Verhalten und API können sich ohne Vorankündigung ändern. Sie ist in den meisten PHP-Standardinstallationen nicht aktiviert und muss separat kompiliert oder als PECL-Paket installiert werden.
Reihenfolge beim Aufräumen: Zerstören Sie Ressourcen stets in der richtigen Reihenfolge: zuerst Puffer von Quellen trennen, dann Puffer zerstören (openal_buffer_destroy()), danach Quellen zerstören (openal_source_destroy()), dann den Kontext (openal_context_destroy()) und zuletzt das Gerät (openal_device_close()). Eine falsche Reihenfolge kann zu Fehlern oder Abstürzen führen.