alcCreateContext: Unterschied zwischen den Versionen
Flash (Diskussion | Beiträge) K (Unvollständig entfernt) |
DGLBot (Diskussion | Beiträge) K (Der Ausdruck ''<pascal>(.*?)</pascal>'' wurde ersetzt mit ''<source lang="pascal">$1</source>''.) |
||
Zeile 62: | Zeile 62: | ||
== Beispiel == | == Beispiel == | ||
Folgender Code öffnet ein Gerät und erzeugt darin einen Kontext, der zum aktuellen Kontext gemacht wird. | Folgender Code öffnet ein Gerät und erzeugt darin einen Kontext, der zum aktuellen Kontext gemacht wird. | ||
− | <pascal>var device: PALCdevice; | + | <source lang="pascal">var device: PALCdevice; |
context: PALCcontext; | context: PALCcontext; | ||
... | ... | ||
Zeile 71: | Zeile 71: | ||
if context<>nil then | if context<>nil then | ||
alcMakeContextCurrent(context); //setzt den aktiven Kontext | alcMakeContextCurrent(context); //setzt den aktiven Kontext | ||
− | end;</ | + | end;</source> |
Version vom 10. März 2009, 19:17 Uhr
Inhaltsverzeichnis
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 0-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 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.
ALC_STEREO_SOURCES
- Erwartet als Wert einen Hinweis, wie viele Source-Objekte in der Lage sein sollen, Stereodaten zu unterstützen.
ALC_SYNC
- Erwartet ein Flag, welches einen synchronen Kontext symbolisiert.
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.