alcCreateContext

Aus DGL Wiki
Wechseln zu: Navigation, Suche

alcCreateContext

Name

alcCreateContext - Erzeugt einen neuen ALC-Kontext.


Delphi-Spezifikation

function alcCreateContext(pDevice: PALCdevice; attrList: PALCint): PALCcontext;


Parameter

pDevice Zeiger auf das Gerät, für das ein neuer ALC Context erstellt werden soll.
attrList Zeiger auf eine Liste mit Attributen. Siehe Beschreibung.


Beschreibung

Die Funktion alcCreateContext erstellt für das ALC-Gerät pDevice einen neuen Kontext und gibt den Zeiger auf den neuen Kontext zurück. Bei Fehlschlag wird ein nil-Zeiger zurückgegeben.

AL (bzw. ALC) ordnet jedem Kontext ein entsprechendes Gerät zu. Folglich kann ein Kontext erst (mit Hilfe der Funktion alcCreateContext) erstellt werden, wenn zuvor ein Gerät geöffnet wurde. Siehe dazu alcOpenDevice.

Beim Erstellen eines Kontextes können bestimmte Attribute gesetzt werden. Werden diese nicht gesetzt, werden implementationsabhängige Standardwerte benutzt.

Die Kontexterstellung schlägt fehl, wenn

  • die Anwendung Attribute anfordert, welche nicht geliefert werden können oder
  • eine ungültige Kombination von Attributen angefordert wurde oder
  • der Wert eines spezifizierten Attributes bzw. eine Kombination von Attributen nicht mit den Standardwerten für unspezifizierte Attribute übereinstimmt.

Als Attribute kann nil oder eine ALC_INVALID-terminierte Liste von Integer-Paaren verwendet werden. Jedes Paar besteht dabei aus einer der nachfolgenden Konstanten und dem zugehörigen Wert.

Folgende Konstanten können genutzt werden:

ALC_FREQUENCY

Erwartet als Wert die interne Frequenz in Hertz für das Zusammenmischen von Ausgabepuffern.

ALC_MONO_SOURCES

Erwartet als Wert einen Hinweis, wie viele Source-Objekte in der Lage sein sollen, Monoaudiodaten zu unterstützen.

ALC_REFRESH

Erwartet als Wert die Frequenz in Hertz für das Refreshintervall. Übliche Werte liegen bei 5..15 Hz.

ALC_STEREO_SOURCES

Erwartet als Wert einen Hinweis, wie viele Source-Objekte in der Lage sein sollen, Stereodaten zu unterstützen.

ALC_SYNC

Boolean, gibt an ob der Kontext einen eigenen Thread startet (AL_FALSE, Standard) oder manuell alcUpdateContext verwendet werden soll (AL_TRUE).

Hinweise

Awendungen haben möglicherweise einen festen oder beschränkten Rhythmus für Zustandsänderungen (z.B. synchron mit der OpenGL-Framerate). In diesem Fall ist es wünschenswert den mixahead interval (milliseconds) oder die Refreshrate (Hz) für den Thread anzugeben. Dies ist besonders für synchrone Kontexte wichtig, wo die Anwendung ein Refreshintervall, welches sie einhalten möchte, anzugeben hat.


Beispiel

Folgender Code öffnet ein Gerät und erzeugt darin einen Kontext, der zum aktuellen Kontext gemacht wird.

var device: PALCdevice;
    context: PALCcontext;
...
device:= alcOpenDevice(nil); //öffnet das Standardgerät
if device<>nil then
begin
  context:= alcCreateContext(device, nil); //erzeugt einen ALC-Kontext
  if context<>nil then
    alcMakeContextCurrent(context); //setzt den aktiven Kontext
end;


Fehlermeldungen

ALC_INVALID_DEVICE wird generiert, wenn kein gültiges Gerät angegeben wurde.

ALC_INVALID_OPERATION wird generiert, falls kein weiterer ALC-Kontext für das angegebene Gerät erstellt werden kann.


Siehe auch

alcDestroyContext, alcGetCurrentContext