Az enginem következő mérföldkőjéhez érkeztem az elmúlt napokban: 3D hangok kezelése OpenAL-lel.
Ennek az API-nak az implementációja a legtöbb rendszeren egy wrapperként jelenik meg (win alatt DirectSound3D) azonban egyes Creative kártyákhoz létezik natív támogatás is.
Az OpenAL API-ját az OpenGL-hez hasonlóan tervezték meg az elnevezések követik annak konvencióit. További hasonlóság a koordinátarendszer, amely mindkettő esetben ugyanaz.
Alapszintű használata nem különösebben nehéz mindössze pár függvény segítségével életre is kelthetjük viszont legalább egy .wav betöltőre szükségünk lesz.
A rendszerben a hangforrásokhoz( source) buffereket kell rendelnünk, amely bufferek a mi általunk megadott hanghullámot jelentik. A bufferek számára jelen ismereteim szerint nincs korlátozás ezzel ellentétben egyszerre (általában) max. 256 hangforrás használata lehetséges tehát mindenképp érdemes megoldanunk a hangforrások "újrahasznosítását".
A hangforrások 3D-ben tetszőlegesen elhelyezhetők (irány és pozíció) és ugyanígy a hallgató ( listener) helye és orientációja is tetszőlegesen megadható.
Ami még lényeges lehet, hogy a hangforrás pozícióját relatívan is megadhatjuk a hallgatóhoz képest (pl. háttérhang kezelésnél a hang mindig a hallgató helyében szól).