青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

FMOD Ex文檔前兩章翻譯(轉(zhuǎn))

Posted on 2009-12-27 15:47 hyf 閱讀(3359) 評(píng)論(2)  編輯 收藏 引用 所屬分類: Game Design

Firelight Technologies FMOD Ex

術(shù)語 / 基本原理

導(dǎo)言

下文中的術(shù)語和原理將貫穿整個(gè)FMOD文檔,本節(jié)對(duì)部分術(shù)語和原理進(jìn)行解釋,以免混淆。

Samples vs bytes vs milliseconds

在很多FMOD函數(shù)中都會(huì)提到PCMsamplesbytesmilliseconds
要理解它們有什么區(qū)別,請(qǐng)看下圖。下圖描述了原始PCM采樣數(shù)據(jù)在FMOD緩沖中的存儲(chǔ)方式:

從圖中可以看出立體聲音頻由左/右聲道的數(shù)據(jù)交替組成。

. 一對(duì)左/右聲道(聲道)數(shù)據(jù)稱為一個(gè)sample

. 因?yàn)槭?span lang="EN-US">16bit的數(shù)據(jù),所以1 sample = 4 bytes

. 如果采樣率是44.1khz或者或回放頻率是44100 采樣/秒,那么1個(gè)采樣是1/44100,或者1/44毫秒。因此44100個(gè)采樣就等于1秒鐘的數(shù)據(jù)。

下面的公式可以用來在不同的術(shù)語間進(jìn)行轉(zhuǎn)換:

. ms = samples * 1000 / samplerate.

. samples = ms * samplerate / 1000.

. samplerate = samples * 1000 / ms.

. bytes = samples * bits * channels / 8.

. samples = bytes * 8 / bits / channels.

一些函數(shù)如Sound::getLength 提供了以毫秒、字節(jié)和采樣為單位的長度值,這樣就不必再使用上述公式計(jì)算了。

聲音——采樣 vs 壓縮采樣 vs

加載聲音有三種方式:一是將靜態(tài)幀解壓后以PCM格式裝入內(nèi)存;二是以其原始格式裝入內(nèi)存,并在運(yùn)行時(shí)解壓;三是將聲音流化后并從外部媒介(如硬盤或CD)實(shí)時(shí)(in chunks)解碼。

. "Samples" 適合那些需要多次播放的小的聲音片段,例如音效。它播放時(shí)占用很少的CPU,并且能使用硬件加速。參見FMOD_CREATESAMPLE

. "Streams" 適合那些因?yàn)樘蠖鵁o法載入內(nèi)存的聲音,聲音會(huì)被流化并裝入到一小段由FMOD管理的環(huán)形緩沖中。這會(huì)占用少量CPU和硬盤帶寬,具體視文件格式而定。舉個(gè)例子,實(shí)時(shí)解碼MP3會(huì)比播放一個(gè)PCM(未壓縮WAV)文件占用更多的CPU。一個(gè)流式的聲音只能播放一次,因?yàn)橐粋€(gè)流只有一個(gè)文件句柄和一個(gè)環(huán)形緩沖。參見FMOD_CREATESTREAM.

. "Compressed samples" 是一個(gè)新的高級(jí)選項(xiàng),它允許用戶將一個(gè)確定格式的壓縮文件裝載到內(nèi)存中,并且不需要對(duì)其解壓。用CPU進(jìn)行軟件混合,沒有stream的只能播放一次的限制。它比標(biāo)準(zhǔn)的PCM采樣占用更多的CPU,但由于不需要訪問硬盤且使用更少的緩沖,因此比stream對(duì)CPU的占用更少。參見FMOD_CREATECOMPRESSEDSAMPLE.

你可能注意到術(shù)語"Sample""Stream"都沒有對(duì)應(yīng)的類名,那是因?yàn)樗械?span lang="EN-US">FMOD APIs
都統(tǒng)一使用"Sound"類型。
默認(rèn)情況下,System::createSound 會(huì)將整個(gè)聲音文件解碼到內(nèi)存中
要使用流進(jìn)行實(shí)時(shí)播放且節(jié)約內(nèi)存的話,創(chuàng)建聲音時(shí)使用FMOD_CREATESTREAM標(biāo)記,或者使用helper函數(shù)System::createStream,其本質(zhì)和System::createSound相同,只是自動(dòng)使用了FMOD_CREATESTREAM標(biāo)記。
要?jiǎng)?chuàng)建一個(gè)壓縮采樣則在System::createSound中使用FMOD_CREATECOMPRESSEDSAMPLE標(biāo)記。

硬件 vs 軟件

FMOD Ex支持通過DirectSound或者控制臺(tái)硬件API對(duì)音頻回放使用硬件加速,但也可以使用自己的軟件混合機(jī)制。
由于基于硬件和軟件的音頻回放的某些特征,所以通常硬件和軟件交替使用。
Hardware sounds(
使用FMOD_HARDWARE創(chuàng)建,CPU占用率低,響應(yīng)時(shí)間短,可以訪問硬件混響),例如EAX4
Hardware sounds
在某些方式下也有其局限性,例如DirecSound就僅限于Windows,靜態(tài)采樣不支持任意位置的循環(huán)點(diǎn)(循環(huán)播放整個(gè)sound或者不循環(huán)), 不能播放非混響音效(例如chorus, distortion, lowpass etc)

Software sounds (
使用FMOD_SOFTWARE創(chuàng)建,雖然有時(shí)會(huì)占用更多的CPU,但它能做更多的事,如復(fù)雜循環(huán)、實(shí)時(shí)解析、音效和采樣精確同步)

Hardware vs Software.

Hardware
優(yōu)點(diǎn)

. Usually lower latency. (Although on consoles or ASIO output in windows, using FMOD_SOFTWARE can have extremely low latency as low as 2-5ms)

. Less CPU time. (Although on Windows software is a lot faster due to bad hardware sound card driver design, and inefficiencies in the DirectSound API).

. On Windows, access to EAX2, EAX3, EAX4, I3DL2 reverb per voice. (FMOD Ex has its own high quality I3DL2 reverb solution in software, but may not be as flexible or have the quality of EAX4 for example.).

. Free hardware obstruction / occlusion (this is usually equivalent to a lowpass filter or reverb attenuation which can also be performed in software at some expense to the CPU), but only on EAX compatible sound cards on Windows. FMOD_SOFTWARE is cross platform.

. On PS2, PSP, XBox, GameCube, Wii, hardware voices can play back ADPCM compressed sound data with no cpu hit.

. On a limited number of soundcards, hardware 3d sounds will be realtime encoded into an AC3 Dolby Digital stream via a digital / optical output on the card so an amplifier can play it in 3D surround sound. FMOD software mixing now supports 5.1 and 7.1 mixing at slightly higher CPU expense, and will work via analog outputs such as soundcards with 3 stereo jacks to run to a 5.1 speaker setup.

Hardware
缺點(diǎn)

. Win32平臺(tái)上不支持點(diǎn)到點(diǎn)循環(huán),XBoxGameCube平臺(tái)支持點(diǎn)到點(diǎn)循環(huán),而PS2上僅支持循環(huán)起點(diǎn),所以不具有跨平臺(tái)兼容性。

. No access to hardware effects per voice. 大多數(shù)PC聲卡和控制臺(tái)都不支持如lowpassdistortionflangechorus etc.等硬件加速音效。

. 沒有循環(huán)計(jì)數(shù)控制。一個(gè)聲音要么被無限次地循環(huán),要么就不循環(huán)。

. 特性支持不一致。例如PS2不支持EAX混響,且3D音效的執(zhí)行通常聽上去不同。

. 有時(shí)比FOMDWindows上的軟件混合速度慢許多。虛擬聲音在換進(jìn)/出時(shí)導(dǎo)致的大量狀態(tài)變化會(huì)帶來很大的硬件開銷(明顯的幀率下降),而軟件卻不會(huì)。

Software
優(yōu)點(diǎn)

. Consistent sound on every platform, there is no variation in playback.

. Sample accurate synchronization callbacks and events.

. Compressed sample playback support without using streams.

. Cross platform reverb.

. Complex looping and loop counts.

. Reverse sample playback.

. Spectrum analysis.

. Filters per channel or for the global mix, to perform effects such as lowpass, distortion, flange, chorus etc.

. Complex DSP network construction for realtime sound synthesis.

. Access to final mix buffer to allow analyzing, drawing to screen, or saving to file.

Software
缺點(diǎn)

. 某些音頻設(shè)備的響應(yīng)時(shí)間(win32waveout輸出)可能會(huì)很長。

. 內(nèi)存占用量更大(分配混合單元和混合緩沖,或?qū)⒙曇魞?chǔ)存在主存而非聲卡緩存中)

Channels and sounds.

當(dāng)你加載完你的聲音后就須要播放,這時(shí)會(huì)用到System::playSound函數(shù),它返回一個(gè)Channel / FMOD_CHANNEL句柄。
參數(shù)channelid通常設(shè)為FMOD_CHANNEL_FREE,表示FMOD將自動(dòng)選擇一個(gè)未使用的通道來播放。

2D vs 3D.

A 3D sound source is a channel that has a position and a velocity. When a 3D channel is playing, its volume, speaker placement and pitch will be affected automatically based on the relation to the listener.
A listener is the player, or the game camera. It has a position, velocity like a sound source, but it also has an orientation.

listener
source間的相對(duì)距離決定音量
listener
source 間的相對(duì)速度決定音調(diào)(多普勒現(xiàn)象)
listener
相對(duì)于source 的方位決定左右聲道平衡揚(yáng)聲器位置

2D sound
不受3D soundlistener的影響 ,沒有多普勒現(xiàn)象,不衰減,也不受揚(yáng)聲器位置影響。
創(chuàng)建2D sound可以調(diào)用Channel::setSpeakerMixChannel::setSpeakerLevelsChannel::setPan
創(chuàng)建3D sound可以調(diào)用所有函數(shù)名中含有3D的函數(shù).

For a more detailed description of 3D sound, read the tutorial in the documentation on 3D sound.

 

 

 

 

 

 

 

 

 

 

 

()[FMOD編程指南]2.GETTING STARTED

 

GETTING STARTED.

導(dǎo)言

FMOD Ex API被設(shè)計(jì)得非常直觀和靈活,本教程將簡(jiǎn)要介紹引擎的使用方法,并對(duì)使用中涉及的相關(guān)問題做出解釋。

配置——What to include and what to link.

查閱文檔中的"Platform specific issues",找出指定平臺(tái)上要使用FMOD Ex函數(shù)所需鏈接的文件。

C/C++中,如果只須使用C接口,則包含"fmod.h",要使用C++接口則須包含"fmod.hpp"
注意:常量、回調(diào)函數(shù)、宏定義和枚舉類型都在fmod.h中,所以fmod.hpp也包含fmod.h,如果你使用C++的話就必須交叉使用。

對(duì)于DelphiC#Visual Basic,都有其對(duì)應(yīng)的頭文件可供在程序中使用。

初始化

要初始化fmod,最簡(jiǎn)單的方法就是調(diào)用System::init函數(shù),FMOD會(huì)使用默認(rèn)參數(shù)來配置聲卡和其他設(shè)置。

在查看文檔中的System::init函數(shù)時(shí),要記住maxchannels參數(shù)是你在游戲中可以同時(shí)播放聲音的最大數(shù)量,該數(shù)與聲卡或軟件混合器無關(guān)。

這些聲音是 虛擬聲音(virtual voices)。這意味著你可以同時(shí)播放任意多的聲音,而不用擔(dān)心硬件或軟件資源問題。
你可以在游戲中安全地播放每個(gè)聲音,而無須擔(dān)心System::playSound超出播放上限或搶占其它聲音。因此只要你喜歡,你可以將maxchannels設(shè)置為任意大的數(shù),如11002001000
注意:同時(shí)播放1000個(gè)聲音并不會(huì)音像性能,因?yàn)樗鼈冎械拇蟛糠质锹牪灰姷?span lang="EN-US"> (
聽不見的聲音被虛擬化)。而FMOD Ex虛擬聲音管理器決定哪些聲音能聽見,哪些聽不見只需要很小的系統(tǒng)開銷。
下面我們看一個(gè)初始化FMOD Ex的例子。

FMOD_RESULT result;

FMOD::System *system;

result =system); // 創(chuàng)建主system對(duì)象

if (result != FMOD_OK)

{

printf("FMOD error! (%d) %s\n", result, FMOD_ErrorString(result));

exit(-1);

}

result = system->init(100, FMOD_INIT_NORMAL, 0); // 初始化FMOD

if (result != FMOD_OK)

{

printf("FMOD error! (%d) %s\n", result, FMOD_ErrorString(result));

exit(-1);

}

這是最基本的初始化FOMD引擎的方法,使用了100個(gè)虛擬聲音。
注意:mods3mxmitmidi格式的文件播放時(shí)只使用一個(gè)聲音,不要以為在這里增大數(shù)量就可以使用多個(gè)聲音來播放這些格式的文件。這些格式的都使用它們自己的internal pool voices

配置選項(xiàng)

如果你不想使用默認(rèn)設(shè)置的話,可以自行設(shè)定輸出硬件、FOMD資源使用和其他配置選項(xiàng)。
這些操作都必須在System::init函數(shù)調(diào)用前進(jìn)行。
常用配置如下:

. System::setOutput選擇輸出方式。例如你可以在Windows上選擇DirectSoundWinMMASIOno-soundwave-writer或其他輸出選項(xiàng),每個(gè)平臺(tái)都有不同的選擇。如果你只是要使用默認(rèn)配置,就不需要調(diào)用它。

. System::setDriver選擇用于播放的設(shè)備驅(qū)動(dòng)。當(dāng)你擁有不止一塊聲卡并且不想使用默認(rèn)聲卡的時(shí)候,這個(gè)函數(shù)就很有用了。你需要用System::getNumDrivers函數(shù)來獲取設(shè)備數(shù),用System::getDriverName函數(shù)來獲取驅(qū)動(dòng)名稱以供用戶選擇。

. System::setHardwareChannels使用這個(gè)函數(shù)來限制硬件聲音的數(shù)量,或設(shè)定在reverting to 100% software mixed voice support之前的最小硬件聲音數(shù)量。“minimum”選項(xiàng)用于保證同時(shí)至少能聽到的聲音數(shù)量。

. System::setSoftwareChannels使用這個(gè)函數(shù)來設(shè)定FMOD通道使用的軟件混合聲音的數(shù)量。 This will be purely for polyphony reasons or CPU / memory resource usage reasons. 使用mod/s3m/xm/it/midi這些格式時(shí),不要指望使用它來增加聲音的數(shù)量,它們不使用通道的pool而使用自己的。

. System::setSoftwareFormat用于改變FMOD軟件混合器的設(shè)置。包括采樣率、輸出模式(integer vs float)、輸出通道數(shù)(multi-output channel ASIO devices)、內(nèi)存使用和混合質(zhì)量。

. System::setDSPBufferSize如果在很慢的機(jī)器上或非良好的聲卡驅(qū)動(dòng)上出現(xiàn)聲音抖動(dòng),就需要使用這個(gè)函數(shù)。它可以改變軟件混合器的響應(yīng)時(shí)間,但誤用的話也可能影響性能。一些人可能想讓用戶在低響應(yīng)時(shí)間高兼容性兩種模式間做出選擇,可以通過調(diào)整緩沖大小來達(dá)到犧牲響應(yīng)時(shí)間換取穩(wěn)定性的目的。

. System::setSpeakerMode設(shè)置揚(yáng)聲器輸出模式。此函數(shù)只對(duì)FMOD軟件混合引擎起作用,默認(rèn)值為stereo (5.1 on xbox and xbox360 and 7.1 on ps3),可以按需要任意更改。注意:聲道數(shù)越多,占用的內(nèi)存也越多。

下面的例子使用了一些配置項(xiàng)來初始化FMOD要記住這些選項(xiàng)都是可選的,如果不需要就不用設(shè)置,在你沒有弄懂其真正含義前,千萬不要僅僅將下面的代碼復(fù)制再粘貼! 例如,如果用戶沒有5.1聲道的系統(tǒng),你就不能僅僅將揚(yáng)聲器模式設(shè)定為5.1

FMOD_RESULT result;

FMOD::System *system;

result =system); //創(chuàng)建主system對(duì)象

ERRCHECK(result);

// 設(shè)置揚(yáng)聲器模式為5.1聲道

result = system->setSpeakerMode(FMOD_SPEAKERMODE_5POINT1); ERRCHECK(result);

// 允許同時(shí)播放100個(gè)軟件混合聲音

result = system->setSoftwareChannels(100); ERRCHECK(result);

// 要求聲卡至少要有32個(gè)2D3D硬件聲音,如果聲音數(shù)超過64,就限制為64

result = system->setHardwareChannels(32, 64, 32, 64); ERRCHECK(result);

// 初始化FOMD,使用100個(gè)虛擬聲音

result = system->init(200, FMOD_INIT_NORMAL, 0);

ERRCHECK(result);

加載與播放

要播放聲音,你必須先加載!
使用System::createSoundSystem::createStream就可以完成這項(xiàng)工作。
默認(rèn)情況下,系統(tǒng)會(huì)嘗試將整個(gè)聲音解壓到內(nèi)存中(如果使用 System::createSound函數(shù)),而和sample不同的是stream(System::createStream創(chuàng)建)是在運(yùn)行時(shí)解碼,僅使用很少的內(nèi)存作為緩沖,這就是為什么大文件最好用stream的原因。
更多請(qǐng)參見術(shù)語/基本原理

下面是一個(gè)加載MP3文件的例子,默認(rèn)條件下System::createSound函數(shù)將整個(gè)MP3解壓成16bitPCM格式,這就意味著將占用比文件本身大許多倍的內(nèi)存。

FMOD::Sound *sound;
// FMOD_DEFAULT
等效于FMOD_LOOP_OFF | FMOD_2D | FMOD_HARDWARE.

result = system->createSound("../media/wave.mp3", FMOD_DEFAULT, 0, &sound);

ERRCHECK(result);

 

下面是一個(gè)用stream打開MP3文件的例子。System::createStream函數(shù)將打開文件并預(yù)緩沖小部分?jǐn)?shù)據(jù),然后就可以在System::playSound調(diào)用時(shí)直接播放了。

FMOD::Sound *sound;
// FMOD_DEFAULT
等效于FMOD_LOOP_OFF | FMOD_2D | FMOD_HARDWARE.

result = system->createStream("../media/wave.mp3", FMOD_DEFAULT, 0, &sound);

ERRCHECK(result);



指定用軟件混合就必須使用FMOD_SOFTWARE標(biāo)記。如果你想要使用如DSP effectsspectrum analysisgetwavedatapoint to point looping和其它更多的高級(jí)技術(shù),就必須使用軟件混合。

FMOD::Sound *sound;
//
使用軟件混合

result = system->createSound("../media/wave.mp3", FMOD_SOFTWARE, 0, &sound);

ERRCHECK(result);



下一個(gè)例子是將MP3sample的形式載入內(nèi)存而不解壓,使用 FMOD_CREATECOMPRESSEDSAMPLE標(biāo)記。此時(shí)如果沒有指定FMOD_HARDWAREFMOD_SOFTWARE,將默認(rèn)為軟件混合。硬件聲音回放不支持這個(gè)標(biāo)記,除非格式為ADPCM on XboxVAG on PS2/PSPGCADPCM on Gamecube/Wii Platforms like PS3 and Xbox 360 are all done one the cpu (usually a different core to the main cpu so it does not affect performance).

FMOD::Sound *sound;
// FMOD_CREATECOMPRESSEDSAMPLE
標(biāo)記讓sample先嘗試直接播放(不解壓到內(nèi)存),但僅限于IMA ADPCMMP2MP3XMA格式

result = system->createSound("../media/wave.mp3", FMOD_CREATECOMPRESSEDSAMPLE, 0, &sound);

ERRCHECK(result);

警告! 必須謹(jǐn)慎使用這種模式,它看上去和PCM sample很相似,但它會(huì)在運(yùn)行時(shí)導(dǎo)致巨大CPU開銷。FMOD按照聲音的壓縮格式,在播放時(shí)對(duì)其進(jìn)行解碼。


現(xiàn)在,要播放soundstream只需簡(jiǎn)單地調(diào)用System::playSound就行了。

FMOD::Channel *channel;

result = system->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);

ERRCHECK(result);

此時(shí),聲音已經(jīng)在后臺(tái)播放了!而你的程序?qū)⒗^續(xù)執(zhí)行。

關(guān)于playSound的注意事項(xiàng):

. 如果不需要的話,可以不必獲取channel句柄,可以將其設(shè)為0NULL。如果你不需要更改這個(gè)sound實(shí)例,或者這個(gè)聲音很短(不循環(huán)),就可以省去它。例如:

result = system->playSound(FMOD_CHANNEL_FREE, sound, false, 0);

ERRCHECK(result);

. 可以在開始播放時(shí)暫停,這樣就可以更改聲音的屬性而不會(huì)被用戶聽見,這就是“paused”參數(shù)的用處所在。例如,如果你將paused設(shè)為true,再設(shè)置音量為0.5,然后解除暫停,此時(shí)聲音就會(huì)一一般的音量播放。但如果你是將paused設(shè)為false,而其它操作相同的話,你會(huì)聽見聲音開始時(shí)瞬間是全音量播放的,用戶可不希望聽到。

result = system->playSound(FMOD_CHANNEL_FREE, sound, true, &channel);

ERRCHECK(result);

// 暫停時(shí)設(shè)定音量

result = channel->setVolume(0.5f);

ERRCHECK(result);

// 聲音從這里才開始播放

result = channel->setPaused(false);

ERRCHECK(result);

. 一個(gè)“channel”就是一個(gè)聲音的實(shí)例。一個(gè)聲音你可以同時(shí)播放多次,每次播放都會(huì)得到一個(gè)新的channel句柄,stream除外,它只能同時(shí)播放一次,如果你嘗試多次播放,只會(huì)重復(fù)播放當(dāng)前stream并返回同上次一樣的channel句柄。這是因?yàn)?span lang="EN-US">stream只有一個(gè)緩沖和一個(gè)文件句柄。要同時(shí)播放兩個(gè)stream就必須打開兩次再播放兩次。

. 始終使用FMOD_CHANNEL_FREEFMOD會(huì)使用通道管理器自動(dòng)為你選擇一個(gè)未使用的channel。如果希望使用一個(gè)現(xiàn)有的channel來播放,就使用FMOD_CHANNEL_REUSE標(biāo)記,這樣可以避免每次調(diào)用System::playSound函數(shù)都產(chǎn)生一個(gè)新的實(shí)例。

. 不需要“free”“release”一個(gè)channel句柄。所有的channel都位于你使用System::init所創(chuàng)建的一個(gè)pool中。當(dāng)聲音停止后,channel可以被復(fù)用;如果所有的channel都處于播放狀態(tài),那么其中一個(gè)優(yōu)先級(jí)最低的會(huì)被搶占。其實(shí)只需增大System::init中的通道數(shù)就可以避免發(fā)生這樣的情況。

. 一個(gè)channel會(huì)在播放結(jié)束時(shí)即刻失效。這意味著你不能再對(duì)其進(jìn)行更改,即使做了也沒有實(shí)際意義,因?yàn)樗豢赡茉俨シ帕恕=^大多數(shù)情況下,引用一個(gè)已失效的channel會(huì)導(dǎo)致一個(gè)FMOD_ERR_INVALID_HANDLE錯(cuò)誤。

Update. (This is important!)

在每一幀中調(diào)用System::update函數(shù)是很重要的,但不需要多次調(diào)用,那樣只會(huì)影響效率。
該函數(shù)用于更新FMOD Ex的以下內(nèi)容:

. Platform specific routines 例如向PS2IOP發(fā)送一個(gè)frame command packet。在這個(gè)平臺(tái)上,不調(diào)用update的話就聽不到聲音。

. Virtual voice emulation 不調(diào)用update,虛擬聲音就不會(huì)播放。

. 3D voice calculation 如果不調(diào)用update,就算channellistener已經(jīng)正確設(shè)置,也無法聽到聲音移動(dòng)的3D音效。

. Geometry engine FMODpolygon/geometry引擎需要通過update來啟用。否則用戶定義的occlusion/obstruction特性將無法呈現(xiàn)。

. Non realtime output FMOD_OUTPUTTYPE_NOSOUND_NRTFMOD_OUTPUTTYPE_WAVWRITER_NRT標(biāo)記需要此函數(shù)才能更新到輸出(如用FMOD_OUTPUTTYPE_WAVWRITER_NRT寫出到文件)

. Streaming engine 如果指定了FMOD_INIT_STREAM_FROM_UPDATE標(biāo)記,如果用戶希望在主線程中自己驅(qū)動(dòng)流引擎,就必須有規(guī)律地調(diào)用update,否則會(huì)導(dǎo)致抖動(dòng)和緩沖溢出。

關(guān)閉

調(diào)用System::release函數(shù)來關(guān)閉輸出設(shè)備并釋放對(duì)象關(guān)聯(lián)的內(nèi)存。
你不必人工關(guān)閉channelsound,這些都在System::release中自動(dòng)完成。
當(dāng)然,你也可以手動(dòng)關(guān)閉它們,這是個(gè)很好的編程練習(xí)(雖然是多余的)
如果你要釋放system對(duì)象就不需要調(diào)用System::close函數(shù)了,在System::release中已經(jīng)包含了對(duì)System::close的調(diào)用。

資源使用配制

在程序開發(fā)中,一些開發(fā)人員希望和其它程序一樣用自己的函數(shù)來訪問所有的磁盤或內(nèi)存。
FMOD Ex中你可以通過System::setFileSystem函數(shù)來設(shè)置FMOD文件系統(tǒng)使你自己的文件程序。

要讓FMOD使用你的內(nèi)存系統(tǒng),或?qū)?span lang="EN-US">FMOD
限制在一個(gè)內(nèi)存塊中,使用Memory_Initialize

注意! XboxXBox 360中,必須給FMOD提供一個(gè)塊內(nèi)存。Xbox 360上必須使用XPhysicalAlloc來分配這塊內(nèi)存。更多參見"Platform specific issues"

 

 

 

 

 

 

 

 

 

 

Feedback

# re: FMOD Ex文檔前兩章翻譯(轉(zhuǎn))  回復(fù)  更多評(píng)論   

2009-12-28 16:36 by 陳梓瀚(vczh)
幾年前就用過FMODEX了,這是個(gè)好東西,而且demo也非常好,基本上不用看文檔看一眼demo的代碼就知道怎么回事了。所以我覺得如果想讓文章更有價(jià)值的話你可以寫教程。

# re: FMOD Ex文檔前兩章翻譯(轉(zhuǎn))[未登錄]  回復(fù)  更多評(píng)論   

2010-01-02 23:35 by SonicMisora
HYF神牛威武

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品日韩欧美| 欧美a级大片| 裸体歌舞表演一区二区| 国产一区二区三区久久久| 91久久精品日日躁夜夜躁欧美 | 亚洲伦伦在线| 久久久久久欧美| 亚洲激情社区| 亚洲国产欧美不卡在线观看| 国内成人精品视频| 亚洲精品欧美极品| 性久久久久久久久| 亚洲日本国产| 欧美亚洲一区二区在线| 性欧美videos另类喷潮| 亚洲伊人网站| 女生裸体视频一区二区三区| 欧美日韩成人| 欧美高清免费| 亚洲欧洲一二三| 麻豆久久精品| **性色生活片久久毛片| 久久国产一区二区| 亚洲一区二区在线播放| 免费在线视频一区| 国模精品娜娜一二三区| 一区二区三区不卡视频在线观看 | 亚洲电影av在线| 欧美一级二区| 国产在线精品自拍| 久久久久九九九九| 久久麻豆一区二区| 亚洲高清不卡在线| 欧美黄色一区二区| 欧美高清一区| 在线视频免费在线观看一区二区| 国产一区二区电影在线观看| 国产日韩欧美一二三区| 亚洲精选在线观看| 久久国产精品免费一区| 136国产福利精品导航| 亚洲图片激情小说| 久久久亚洲高清| 亚洲乱亚洲高清| 99re热这里只有精品视频| 国产精品美女在线| 欧美mv日韩mv国产网站| 欧美精品一区二区三| 亚洲欧美中日韩| 久久精品亚洲一区二区三区浴池 | 免费成人网www| 欧美激情自拍| 久久国产精品第一页| 久久久久久午夜| 一区二区三区国产盗摄| 欧美一区二区视频网站| 亚洲欧洲偷拍精品| 亚洲欧美一区二区三区久久| 亚洲高清资源综合久久精品| 日韩视频免费看| 在线成人av网站| 中国女人久久久| 亚洲国产一区二区a毛片| 99av国产精品欲麻豆| 国产亚洲在线| 99精品免费| 亚洲成人在线观看视频| 亚洲视频久久| 亚洲黑丝在线| 欧美一区二区女人| 在线视频日本亚洲性| 久久精品亚洲国产奇米99| 亚洲一区二区在线视频| 久久频这里精品99香蕉| 欧美一区影院| 欧美日韩亚洲成人| 欧美α欧美αv大片| 国产伦精品一区二区三区视频孕妇| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品黄视频| 亚洲第一偷拍| 禁断一区二区三区在线| 亚洲一级在线| 中文av字幕一区| 欧美极品一区| 国产精品亚洲精品| 亚洲综合欧美日韩| 久久视频一区二区| 国产欧美一区二区视频| 亚洲精品国产精品国自产在线| 久久久人成影片一区二区三区观看| 亚洲毛片在线观看| 久久精品夜色噜噜亚洲a∨| 中国成人亚色综合网站| 老牛国产精品一区的观看方式| 亚洲嫩草精品久久| 欧美精品一区二区蜜臀亚洲| 欧美呦呦网站| 国产精品久久久久久模特 | 日韩视频一区二区三区在线播放| aa亚洲婷婷| 老司机成人网| 亚洲精品日韩综合观看成人91 | 欧美亚洲一区二区三区| 国产精品免费小视频| 久久国产精品久久久久久电车| 久久av资源网站| 亚洲黄色成人网| 亚洲国产精品成人精品| 欧美日韩mv| 玖玖玖国产精品| 欧美日韩三级视频| 久久色在线观看| 国产精品久久久久aaaa九色| 久久综合给合久久狠狠狠97色69| 欧美日韩国产在线一区| 久久婷婷国产麻豆91天堂| 欧美午夜a级限制福利片| 欧美/亚洲一区| 国产美女精品视频免费观看| 久久久久久久91| 欧美三级欧美一级| 香蕉久久夜色| 你懂的视频一区二区| 最新中文字幕一区二区三区| 国产亚洲激情视频在线| 一区二区黄色| 亚洲图片在线观看| 欧美精品999| 亚洲国产成人av在线| 黄色精品一区二区| 亚洲欧美资源在线| 性色一区二区三区| 国产精品毛片| 亚洲一区二区三区视频播放| 亚洲激情欧美激情| 欧美成人一区二区| 亚洲国产精品久久人人爱蜜臀 | 亚洲砖区区免费| 欧美黄色aaaa| 亚洲国产精品激情在线观看| 亚洲国产精品精华液2区45| 欧美一区久久| 老色批av在线精品| 麻豆精品91| 午夜国产精品视频免费体验区| 久久在线视频在线| 欧美日韩一区免费| 欧美成人xxx| 亚洲日本免费电影| 亚洲级视频在线观看免费1级| 亚洲一区二区三区四区在线观看 | 国产精品萝li| 欧美精品色网| 国产亚洲精品7777| 久久精品二区亚洲w码| 久久久国产精品一区| 亚洲欧洲日本国产| 久久精品综合一区| 国产欧美精品久久| 亚洲欧美清纯在线制服| 欧美一区二区三区另类| 好看的av在线不卡观看| 久久亚洲精品一区| 免费不卡中文字幕视频| 午夜伦欧美伦电影理论片| 亚洲欧美激情诱惑| 久久综合婷婷| 欧美日韩一区免费| 韩日在线一区| 性做久久久久久久免费看| 久久久久久久激情视频| 亚洲国产精品美女| 欧美在线免费观看亚洲| 蜜臀久久99精品久久久画质超高清 | 一本一本久久a久久精品综合妖精| 亚洲最新视频在线| 欧美一区二区视频免费观看| 欧美 日韩 国产一区二区在线视频| 亚洲欧美国产精品桃花 | 一本色道久久88综合亚洲精品ⅰ | 欧美精品情趣视频| 欧美福利影院| 中日韩美女免费视频网址在线观看 | 在线电影国产精品| 欧美高清视频在线| 亚洲欧美日韩综合国产aⅴ| 欧美国产欧美综合 | 免费成人av资源网| 亚洲一区免费观看| 亚洲韩国精品一区| 国产午夜精品一区二区三区视频| 免费美女久久99| 午夜精品久久久久影视| 亚洲精品九九| 欧美成人免费网站| 性色一区二区三区| 国产精品99久久99久久久二8| 在线成人av| 国产欧美一区二区精品仙草咪 |