alcCreateContext: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Artikel begonnen. Bitte korrekturlesen und fertigstellen.)
 
(Beschreibung)
 
(4 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Unvollständig|Muss noch fertig übersetzt werden.<br>Als Basis für die Übersetzung diente [http://www.openal.org/oalspecs-annote/x1489.html dieser Artikel]}}
 
 
= alcCreateContext =
 
= alcCreateContext =
  
Zeile 5: Zeile 4:
  
 
== Name ==
 
== Name ==
'''alcCreateContext''' - Erzeugt einen neuen [[ALC Context]].
+
'''alcCreateContext''' - Erzeugt einen neuen [[ALC-Kontext]].
  
  
Zeile 15: Zeile 14:
  
 
== Parameter ==
 
== Parameter ==
 
 
{| border="1" rules="all"
 
{| border="1" rules="all"
 
! ''pDevice''  
 
! ''pDevice''  
| Zeiger auf das Gerät für das ein neuer ALC Context erstellt werden soll.
+
| Zeiger auf das Gerät, für das ein neuer ALC Context erstellt werden soll.
 
|-
 
|-
 
! ''attrList''  
 
! ''attrList''  
Zeile 28: Zeile 26:
  
 
== Beschreibung ==  
 
== Beschreibung ==  
'''alcCreateContext''' erstellt für das ALC Gerät ''pDevice'' einen neuen Kontext.
+
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.
+
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.
 
Beim Erstellen eines Kontextes können bestimmte Attribute gesetzt werden. Werden diese nicht gesetzt, werden implementationsabhängige Standardwerte benutzt.
Zeile 39: Zeile 37:
 
*der Wert eines spezifizierten Attributes bzw. eine Kombination von Attributen nicht mit den Standardwerten für unspezifizierte Attribute übereinstimmt.
 
*der Wert eines spezifizierten Attributes bzw. eine Kombination von Attributen nicht mit den Standardwerten für unspezifizierte Attribute übereinstimmt.
  
Als Attribute kann {{INLINE_CODE|null}} oder eine 0-Terminierte Liste von Integer-Paaren verwendet werden. Jedes Paar besteht dabei aus einer der nachfolgenden Konstanten und dem zugehörigen Wert.
+
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:
 
Folgende Konstanten können genutzt werden:
 
===ALC_FREQUENCY===
 
===ALC_FREQUENCY===
Erwartet als Wert die Frequenz in Herz für das Zusammenmischen von Ausgabepuffern.
+
: 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===
 
===ALC_REFRESH===
Erwartet als Wert die Frequenz in Herz für das Refreshintervall.
+
: 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===
 
===ALC_SYNC===
Erwartet ein Flag welches einen synchronen Kontext symbolisiert.
+
: Boolean, gibt an ob der Kontext einen eigenen Thread startet (AL_FALSE, Standard) oder manuell [[alcUpdateContext]] verwendet werden soll (AL_TRUE).
  
 
== Hinweise ==
 
== Hinweise ==
'''''Applications might have a fixed, or bounded, schedule for state changes (e.g. synchronously with the GL framerate). In this case it is desirable to specify the mixahead interval (milliseconds), or refresh rate (Hz), for the mixing thread. This is especially important for a synchronous context, where the application has to specify the refresh interval it intends to keep.'''''
+
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.
 +
<source lang="pascal">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;</source>
 +
 
  
  
 
== Fehlermeldungen ==
 
== 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 ==
 
== Siehe auch ==
[[alcGetCurrentContext]]
+
[[alcDestroyContext]], [[alcGetCurrentContext]]
  
[[Kategorie:AL|GetContextsDevice]]
+
[[Kategorie:AL|CreateContext]]
[[Kategorie:ALC|GetContextsDevice]]
+
[[Kategorie:ALC|CreateContext]]

Aktuelle Version vom 2. Januar 2014, 17:14 Uhr

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