Start · Sprachen · PHP · Referenz · openal_source_destroy

openal_source_destroy

Funktion

Zerstört eine OpenAL-Quellen-Ressource und gibt die damit verbundenen Ressourcen frei.

Kategorie: misc

Signatur

openal_source_destroy(resource $source): bool

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

Typ
bool
Beschreibung
Gibt 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.";
?>
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);
?>
Quelle erfolgreich zerstört. Quelle erfolgreich zerstört. Quelle erfolgreich zerstört. Quelle erfolgreich zerstört. Quelle erfolgreich zerstört.

// 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.