ÖppenAL
Originalförfattare | Loki programvara |
---|---|
Utvecklare | Kreativ teknik |
Stabil frisättning | 1.1 (installationsprogram 2.1.0.0) / november 2009
|
Skrivet i | C |
Operativ system | 15 operativsystem Se: Plattformar som stöds |
Typ | Gränssnitt för applikationsprogrammering |
Licens | Proprietär sedan v1.1, LGPL före v1.1, BSD i tidiga versioner |
Hemsida |
|
OpenAL ( Open Audio Library ) är ett plattformsoberoende programmeringsgränssnitt för ljudapplikationer ( API). Den är designad för effektiv återgivning av flerkanaligt tredimensionellt positionsljud. Dess API-stil och konventioner liknar medvetet de för OpenGL . OpenAL är ett miljömässigt 3D- ljudbibliotek, som kan lägga till realism till ett spel genom att simulera dämpning (försämring av ljud över avstånd), dopplereffekten (förändring i frekvens som ett resultat av rörelse) och materialdensiteter. OpenAL syftade ursprungligen till att vara en öppen standard och öppen källkodsersättning för proprietära (och i allmänhet inkompatibla med varandra) 3D-ljud-API:er som DirectSound och Core Audio , även om det i praktiken till stor del har implementerats på olika plattformar som ett omslag runt nämnda proprietära API:er eller som en proprietär och leverantörsspecifik gaffel. Medan referensimplementeringen senare blev proprietär, finns det öppen källkodsimplementering som OpenAL Soft tillgängliga.
Historia
OpenAL utvecklades ursprungligen 2000 av Loki Software för att hjälpa dem i deras verksamhet att porta Windows -spel till Linux . Efter Lokis bortgång upprätthölls projektet under en tid av fri programvara / öppen källkodsgemenskap och implementerades på NVIDIA nForce ljudkort och moderkort. Den är nu värd (och till stor del utvecklad) av Creative Technology med pågående stöd från Apple , Blue Ripple Sound via deras Rapture3D OpenAL Driver och individuella utvecklare med öppen källkod.
Även om OpenAL-stadgan säger att det kommer att finnas en "Architecture Review Board" (ARB) efter modell av OpenGL ARB, har ingen sådan organisation någonsin bildats och OpenAL-specifikationen hanteras och diskuteras i allmänhet via e-post på dess offentliga e-postlista.
Sedan 1.1 har implementeringen av Creative blivit proprietär [ citation needed ] , med de senaste utgåvorna i fria licenser fortfarande tillgängliga via projektets källkodsarkiv för Subversion . Men OpenAL Soft är ett allmänt använt alternativ med öppen källkod.
API-struktur och funktionalitet
Den allmänna funktionaliteten hos OpenAL är kodad i källobjekt , ljudbuffertar och en enda lyssnare . Ett källobjekt innehåller en pekare till en buffert, ljudets hastighet, position och riktning samt ljudets intensitet. Lyssnarobjektet innehåller lyssnarens hastighet, position och riktning och den allmänna förstärkningen som appliceras på allt ljud. Buffertar innehåller ljuddata i PCM- format, antingen 8- eller 16-bitars , i antingen mono- eller stereoformat . Återgivningsmotorn utför alla nödvändiga beräkningar för avståndsdämpning, dopplereffekt etc.
Nettoresultatet av allt detta för slutanvändaren är att i en korrekt skriven OpenAL-applikation beter sig ljud ganska naturligt när användaren rör sig genom den virtuella världens tredimensionella utrymme. Ur en programmerares perspektiv krävs mycket lite extra arbete för att få detta att hända i en befintlig OpenGL-baserad 3D-grafisk applikation.
Till skillnad från OpenGL-specifikationen inkluderar OpenAL-specifikationen två undersektioner av API : et: kärnan som består av de faktiska OpenAL-funktionsanropen och ALC (Audio Library Context) API som används för att hantera renderingskontexter, resursanvändning och låsning i en plattformsoberoende plattform sätt. Det finns också ett 'ALUT'-bibliotek (Audio Library Utility Toolkit) som ger 'bekvämlighet'-funktioner på högre nivå - exakt analogt med OpenGL:s ' GLUT '.
För att ge ytterligare funktionalitet i framtiden använder OpenAL en förlängningsmekanism. Enskilda leverantörer kan därigenom inkludera sina egna tillägg i distributioner av OpenAL, vanligtvis i syfte att exponera ytterligare funktionalitet på sin egenutvecklade hårdvara. Tillägg kan befordras till ARB-status (Architecture Review Board), vilket indikerar en standardförlängning som kommer att bibehållas för bakåtkompatibilitet. ARB-tillägg har möjlighet att läggas till i kärn-API:et efter en tid.
För avancerad digital signalbehandling och hårdvaruaccelererade ljudeffekter kan EFX (Effects Extension) eller miljöljudtillägg (EAX) användas.
Begränsningar
Enkellyssnarmodellen i OpenAL är skräddarsydd för en enda mänsklig användare och är inte lämplig för artificiell intelligens eller robotsimuleringar eller flera mänskliga deltagare som i samverkande musikaliska framträdanden. I dessa fall krävs en modell med flera lyssnare. OpenAL tar inte heller hänsyn till ljudutbredningsfördröjningar ( ljudhastigheten används endast för dopplereffekten ). Avståndet till en ljudkälla översätts bara till en amplitudeffekt (dämpning) och inte en fördröjning. Därför kan OpenAL inte användas för tidsskillnadsberäkningar för ankomst om inte den funktionaliteten läggs till separat.
För att dra nytta av OpenAL i full hastighet behövs en leverantörs-/hårdvaruspecifik implementering och dessa släpps sällan som öppen källkod. Många plattformar som stöds implementerar faktiskt OpenAL som ett omslag som helt enkelt översätter anrop till plattformens inbyggda, och ofta proprietära, ljud-API. På Windows, om en leverantörsspecifik implementering inte upptäcks kommer den att falla tillbaka till wrap_oal.dll wrapper-biblioteket som översätter OpenAL till DirectSound (Generic Software) eller DirectSound3D (Generic Hardware); borttagningen av den senare från Windows Vista och framåt har effektivt brutit generisk hårdvaruacceleration på moderna versioner av Windows.
Plattformar som stöds
API:et är tillgängligt på följande plattformar och operativsystem : Android (stöder OpenSL ES ), AmigaOS 3.x och 4.x, Bada , BlackBerry 10 , BlackBerry PlayBook , BSD , iOS (stöder Core Audio ), IRIX , Linux (stöder ALSA , OSS , PortAudio och PulseAudio ), Mac OS 8 , Mac OS 9 och Mac OS X ( Core Audio ), Microsoft Windows (stöder DirectSound , Windows Multimedia API och Windows Multimedia Device (MMDevice) API), MorphOS , OpenBSD , Solaris , QNX och AROS .
Spelenheter som stöds är till exempel: GameCube , PlayStation 2 , PlayStation 3 , Xbox , Xbox 360 , Wii och PlayStation Portable .
Ansökningar
Spel
Följande videospel är kända för att använda OpenAL:
- 0 e.Kr
- Alfaprotokoll
- America's Army: Operations
- American Truck Simulator
- Amnesia: The Dark Descent
- Väpnat överfall
- Baldur's Gate: Enhanced Edition
- Battlefield 2
- Battlefield 2142
- BioShock
- Bit.Trip
- Colin McRae: DiRT
- Doom 3
- Euro lastbilssimulator 2
- FlightGear
- ioquake3
- Jedi Knight II: Jedi Outcast
- Jedi Knight: Jedi Academy
- Mari0
- Mass Effect (tv-spel)
- Minecraft
- OpenArena
- Orbz
- Penumbra: Ouvertyr
- Post 2
- Byte
- Psykonauter
- Quake 4
- Racerförare: Grid
- Regnum Online
- Springer Med Gevär
- STALKER
- Systemchock 2
- The Dark Mod
- Skakande
- Unreal II: The Awakening
- Unreal Tournament 2003
- Unreal Tournament 2004
- Unreal Tournament 3
- War§ow
- Wurm online
Andra applikationer
- Blender – 3D-modellerings- och renderingsverktyg använder OpenAL för sin inbyggda spelmotor [ behöver uppdateras? ]
- 3DMark06 – Spelarens benchmarking-verktyg
- Dolphin (emulator) – GameCube och Wii emulator
- Vanda Engine – använder OpenAL 1.1 för att simulera 2D- och 3D-ljud
- Krocketprojekt
- Bino - Videospelare programvara som har stöd för stereoskopisk 3D-video och multi-display video
Genomföranden
- OpenAL SI
- OpenAL Sample Implementation är den ursprungliga implementeringen, från Loki, och underhålls för närvarande inte.
- OpenAL Soft
- OpenAL Soft är en LGPL-licensierad, plattformsoberoende mjukvaruimplementering. Biblioteket är avsett som en kompatibel uppdatering/ersättning av den föråldrade OpenAL Sample Implementation, såväl som ett gratis alternativ till den nu proprietära OpenAL. OpenAL Soft stöder mono, stereo, 4-kanals, 5.1, 6.1, 7.1, HRTF, UHJ och B-format.
- AeonWave-OpenAL
- AeonWave-OpenAL är ett LGPL-licensierat OpenAL-emuleringslager som drar fördel av hårdvaruaccelerationen som tillhandahålls av det icke-fria men billiga AeonWave 4D-ljudbiblioteket för Linux och Windows tillverkat av Adalin BV Författaren hävdar att AeonWave-OpenAL implementeringen gör 3D-ljud fem (på en AMD Athlon 64 X2 ) till sju (på en Intel Atom N270 ) gånger snabbare än antingen OpenAL SI eller OpenAL Soft under samma förhållanden. Genom att använda AeonWave-biblioteket stöder denna implementering HRTF såväl som rumsligt surroundljud för upp till åtta högtalare.
- Rapture3D OpenAL-drivrutin
- Rapture3D OpenAL Driver är en icke-fri , kommersiell, endast Windows-programvaruimplementering gjord av Blue Ripple Sound. Biblioteket är tänkt som en högpresterande drop-in-ersättning för andra implementeringar. Den har:
- 32-bitars flyttalsljudväg.
- Högkvalitativ samplingsfrekvensomvandling (används för olika ändamål inklusive Dopplerskift).
- Effekter och filter av hög kvalitet.
- Riktade ljudkällor.
- Stöd för flerkanaliga ljudkällor (inklusive tillgångar kodade med Ambisonics ).
- Den enda gränsen för antalet källor eller effekter är CPU-kraft, kan återge hundratals ljudkällor och flera effekter på relativt gammal hårdvara.
- Högre ordning Ambisonics (HOA) buss körs på upp till fjärde ordningen.
Se även
externa länkar
- OpenAL officiella webbplats
- OpenAL Mjuk
- AeonWave-OpenAL
- DevMaster.net OpenAL Tutorials (Obs: dessa tutorials visar sin ålder något genom att till exempel använda föråldrade funktioner som alutLoadWAVFile) [ död länk ]
- Rapture3D avancerad OpenAL 1.1-drivrutin
- OpenAL-paket för C++