OpenAL-Gerät, Puffer und Kontextbeziehung

8

Ich versuche, ein objektorientiertes Modell zu erstellen, um OpenAL zu umhüllen und habe ein kleines Problem, die Geräte, Puffer und Kontexte zu verstehen.

Aus dem, was ich im Programmierhandbuch sehen kann, gibt es mehrere Geräte, von denen jedes mehrere Kontexte sowie mehrere Puffer haben kann. Jeder Kontext hat einen Listener, und die Funktionen alListener*() arbeiten alle auf dem Listener des aktiven Kontextes. (Das bedeutet, dass ich zuerst einen anderen Kontext aktiv machen muss, wenn ich den Hörer wechseln möchte, wenn ich das richtig verstanden habe.) So weit, so gut. Was mich jedoch irritiert ist, dass ich ein Gerät an die Funktion alcCreateContext() übergeben muss, aber keine an alGenBuffers() .

Wie funktioniert das dann? Wenn ich mehrere Geräte öffne, auf welchem ​​Gerät werden die Puffer erstellt? Sind die Puffer zwischen allen Geräten aufgeteilt? Was passiert mit den Puffern, wenn ich alle geöffneten Geräte schließe?

(Oder gibt es etwas, das ich vermisst habe?)

    
sunside 02.06.2010, 18:42
quelle

1 Antwort

4

Okay, Problem gelöst. Ich stellte die Frage hier und die Antwort war

  

Alle al * -Funktionen (anstelle von alc * -Funktionen) arbeiten mit dem Strom   Kontext. AlGenBuffer-Aufrufe werden also im aktuellen Kontext ausgeführt und   Erstellen Sie Puffer, die zum Gerät des Kontext gehören (ein Kontext kann nur haben   ein Gerät).

     

Auf einem Gerät erstellte Puffer sind auf einem anderen Gerät nicht verfügbar.

     

Ein Gerätepuffer wird (wahrscheinlich) automatisch zerstört, wenn Sie anrufen   alcCloseDevice.

Also muss ich einen beliebigen Kontext für dieses Gerät aktivieren, dann die Puffer erstellen und dann den alten Kontext wieder aktivieren. Oder verhindern Sie die Erstellung von Puffern, wenn das Gerät nicht aktiv ist, dh keiner der Kontexte aktiv ist.

    
sunside 04.06.2010, 18:36
quelle

Tags und Links