alDistanceModel: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Neuer Artikel - Bilder von den Gain-Kurven fehlen)
(kein Unterschied)

Version vom 2. Januar 2009, 14:30 Uhr

alDistanceModel

Name

alDistanceModel - Diese Funktion setzt das Distanzmodell für OpenAL.

Delphi-Spezifikation

procedure alDistanceModel(value: TALenum)


Parameter

value Symbolische Konstante, welche das zu nutzende Distanzverhalten representiert. Gültige Werte sind:

AL_INVERSE_DISTANCE, AL_INVERSE_DISTANCE_CLAMPED, AL_LINEAR_DISTANCE, AL_LINEAR_DISTANCE_CLAMPED, AL_EXPONENT_DISTANCE, AL_EXPONENT_DISTANCE_CLAMPED, oder AL_NONE
Vorgabewert ist AL_INVERSE_DISTANCE_CLAMPED


Beschreibung

alDistanceModel bestimmt wie das Tonverhalten in Abhängigkeit von der Entfernung modelliert werden soll.

Es folgt für jedes Distanzmodell die Beschreibung wie die Verstärkung (gain) errechnet wird.

AL_INVERSE_DISTANCE

gain = AL_REFERENCE_DISTANCE / 
      (AL_REFERENCE_DISTANCE +  AL_ROLLOFF_FACTOR * (distance – AL_REFERENCE_DISTANCE) );


AL_INVERSE_DISTANCE_CLAMPED

Dieses Distanzmodell ist das Standardmodell von OpenAL.

distance = max(distance,AL_REFERENCE_DISTANCE); 
distance = min(distance,AL_MAX_DISTANCE); 
gain = AL_REFERENCE_DISTANCE / 
      (AL_REFERENCE_DISTANCE +  AL_ROLLOFF_FACTOR * (distance – AL_REFERENCE_DISTANCE) );

Das folgende Bild zeigt die inverse Distanzkurve.

bitte Bild bauen und einfügen - Die Bilder von Creative sind geschützt

AL_LINEAR_DISTANCE

distance = min(distance, AL_MAX_DISTANCE) // avoid negative gain 
gain = ( 1 – AL_ROLLOFF_FACTOR * (distance – AL_REFERENCE_DISTANCE) / 
         (AL_MAX_DISTANCE – AL_REFERENCE_DISTANCE)
       )

AL_LINEAR_DISTANCE_CLAMPED

distance = max(distance, AL_REFERENCE_DISTANCE) 
distance = min(distance, AL_MAX_DISTANCE) 
gain = ( 1 – AL_ROLLOFF_FACTOR * (distance – AL_REFERENCE_DISTANCE) / 
         (AL_MAX_DISTANCE – AL_REFERENCE_DISTANCE)
       )

Das nachfolgende Bild zeigt die Kurve des linearen Distanzmodells.

bitte Bild bauen und einfügen - Die Bilder von Creative sind geschützt

AL_EXPONENT_DISTANCE

gain = (distance / AL_REFERENCE_DISTANCE) ^ (- AL_ROLLOFF_FACTOR)


AL_EXPONENT_DISTANCE_CLAMPED

distance = max(distance, AL_REFERENCE_DISTANCE) 
distance = min(distance, AL_MAX_DISTANCE) 
gain = (distance / AL_REFERENCE_DISTANCE) ^ (- AL_ROLLOFF_FACTOR)

Das nachfolgende Bild zeigt die Kurve des exponentiellen Distanzmodells.

bitte Bild bauen und einfügen - Die Bilder von Creative sind geschützt

AL_NONE

gain = 1;


Hinweise

Verfügbar ab OpenAL Version 1.0


Änderungen

Folgende Erweiterungen hat die Funktion erfahren:

bisher keine


Fehlermeldungen

AL_INVALID_VALUE wird generiert, wenn das angegebene Distanzmodell nicht gültig ist. AL_INVALID_OPERATION wird generiert, wenn kein Kontext vorhanden ist.


Zugehörige Wertrückgaben

alGet mit Token AL_DISTANCE_MODEL


Siehe auch

passende Funktionen nachpflegen