|
[Grafika]
[WebTip]
[Fotografování]
[Galerie]
[MujMac]
[Printing]
|
|||||||||
|
|
||||||||||
|
|
|||||||||
|
SDL_mixer A po delší době tu máme další článek o SDL, dnes probereme jak hru ozvučit. Zvuky a hudba dodávají hře rozměr. Samotné SDL umí jednoduše přehrávat soubory typu WAV, pokud chceme muziku musíme si pořídit dodatečnou knihovnu, mě se osvědčila knihovna SDL_mixer. Popis Tato knihovna umí přehrávat soubory typů: Zvuky
Hudba
U WAV, AIFF a VOC podporuje až 8 kanálů, panning a takové efekty, jako je utlumení zvuku. A nejlepší na tom je, že to vše zvládá ve Windows i mnoha unixovských systémech, a tak nejsou problémy s přenositelností. Všechny funkce knihovny popisovat nebudu, neboť knihovna má velmi dobrou anglickou dokumentaci a soustředím se spíše na příklad jak s knihovnou pracovat. Příklad V příkladu nastavíme zvukový výstup na frekvenci 22kHz, které jsou optimální i pro starší počítače. A 16b hloubku zvuku, stereo. A zvuk se bude přehrávat po blocích 1024 hodnot. Pokud zvolíme příliš malou délku bloku bude se volat obnovovací funkce častěji, což může na pomalých počítačích způsobit přeskakování zvuku. Pro poslech hudby můžeme nastavit třeba na 4096B, což ve hrách zase způsobí větší opožďování zvuku. Mixer má standardně 8 přehrávacích kanálů. Pro lepší přehlednost co a v jakém kanálu přehráváme doporučuji si vytvořit enum s názvy zvuku (a kanálů tedy pokud zadáváme určitý kanál pro přehrání).
Poté nahrajeme zvuk
Zde zvuk přehrajeme. Musíme pamatovat, že pokud přehráváme zvuk v kanálu kde již nějaký zvuk běží, tak je předchozí zvuk zastaven a spuštěn nový. Pokud se přehrává několik zvuků v různých kanálech, tak dojde k jejich zmixování. Pokud místo kanálu vložíme -1, tak se zvuk přehraje na prvním volném kanálu.
Nahrajeme hudbu a spustíme ji ve smyčce.
Vypneme mixer.
Myslím, že tento kód by měl stačit pro představu, jak se knihovna SDL_mixer ovládá. Pokud potřebujete svůj projekt v SDL ozvučit, tak tato knihovna je jistě dobrou volbou. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||