Signatur
Beschreibung
openal_source_destroy() gibt eine zuvor mit openal_source_create() erzeugte Audio-Quellen-Ressource frei. Nach dem Aufruf ist die Ressource ungültig und darf nicht mehr verwendet werden.
Diese Funktion sollte immer aufgerufen werden, wenn eine Audioquelle nicht mehr benötigt wird, um Speicherlecks und eine Erschöpfung der OpenAL-internen Ressourcen zu vermeiden. OpenAL verwaltet Quellen in einer begrenzten Anzahl, weshalb nicht mehr benötigte Quellen zeitnah freigegeben werden sollten.
Die Funktion gehört zur OpenAL-Erweiterung für PHP, die das Abspielen und Verwalten von 3D-Audio ermöglicht. Der typische Einsatz erfolgt am Ende der Nutzung einer Audioquelle, etwa nach dem Abspielen eines Soundeffekts oder beim Aufräumen von Ressourcen vor Programmende.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $source Pflicht | resource | Eine gültige OpenAL-Quellen-Ressource, die zuvor mit openal_source_create() erzeugt wurde. |
Rückgabewert
true zurück, wenn die Quellen-Ressource erfolgreich zerstört wurde, andernfalls false.Beispiele
Audioquelle erstellen, nutzen und wieder zerstören
<?php
// OpenAL-Gerät öffnen
$device = openal_device_open();
$context = openal_context_create($device);
openal_context_current($context);
// Puffer und Quelle erstellen
$buffer = openal_buffer_create();
$source = openal_source_create();
// Quelle konfigurieren und Puffer zuweisen
openal_source_set($source, AL_BUFFER, $buffer);
// Quelle abspielen
openal_source_play($source);
// ... Audio-Wiedergabe abwarten oder steuern ...
// Ressourcen freigeben
openal_source_stop($source);
openal_source_destroy($source);
openal_buffer_destroy($buffer);
openal_context_destroy($context);
openal_device_close($device);
echo "Ressourcen erfolgreich freigegeben.";
?>
Mehrere Quellen erstellen und ordnungsgemäß aufräumen
<?php
$device = openal_device_open();
$context = openal_context_create($device);
openal_context_current($context);
$sources = [];
for ($i = 0; $i < 5; $i++) {
$sources[] = openal_source_create();
}
// ... Quellen verwenden ...
// Alle Quellen freigeben
foreach ($sources as $source) {
openal_source_stop($source);
if (openal_source_destroy($source)) {
echo "Quelle erfolgreich zerstört.\n";
} else {
echo "Fehler beim Zerstören der Quelle.\n";
}
}
openal_context_destroy($context);
openal_device_close($device);
?>
// Wichtig · Fallstricke
Achtung: Nach dem Aufruf von openal_source_destroy() darf die übergebene Ressource nicht mehr verwendet werden. Jede weitere Nutzung der zerstörten Ressource führt zu undefiniertem Verhalten oder PHP-Fehlern.
Es empfiehlt sich, eine Quelle vor dem Zerstören mit openal_source_stop() zu stoppen, um sicherzustellen, dass keine Wiedergabe mehr aktiv ist. Die OpenAL-Erweiterung für PHP (ext/openal) ist nicht standardmäßig aktiviert und muss separat installiert bzw. kompiliert werden.