3

FMODからOpenALに移行していますが、サンプルのサンプルの長さを返すFSOUND_Sample_GetLength ()関数の類似物が見つかりません(頻度は考慮されていません)... OpenALバッファー名を取得しますalutLoadMemoryFromFileImage()からなので、この方法で波形データを取得することはできません。

助けてください!

4

1 に答える 1

13

alGetBufferi()を使用して、自分でつなぎ合わせる必要があります。

ALint sizeInBytes;
ALint channels;
ALint bits;

alGetBufferi(bufferID, AL_SIZE, &sizeInBytes);
alGetBufferi(bufferID, AL_CHANNELS, &channels);
alGetBufferi(bufferID, AL_BITS, &bits);

lengthInSamples = sizeInBytes * 8 / (channels * bits);

そして秒単位の期間:

ALint frequency;

alGetBufferi(bufferID, AL_FREQUENCY, &frequency);

durationInSeconds = (float)lengthInSamples / (float)frequency;
于 2011-11-03T13:25:21.723 に答える