static void AL_InitUnderwaterFilter() { #if defined (__APPLE__) return; #else /* Generate a filter */ qalGenFilters(1, &underwaterFilter); if (qalGetError() != AL_NO_ERROR) { Com_Printf("Couldn't generate an OpenAL filter!\n"); return; } /* Low pass filter for underwater effect */ qalFilteri(underwaterFilter, AL_FILTER_TYPE, AL_FILTER_LOWPASS); if (qalGetError() != AL_NO_ERROR) { Com_Printf("Low pass filter is not supported!\n"); return; } /* The effect */ qalFilterf(underwaterFilter, AL_LOWPASS_GAIN, 1.5); qalFilterf(underwaterFilter, AL_LOWPASS_GAINHF, 0.25); #endif }
/* * Set up the underwater filter */ static void AL_InitUnderwaterFilter() { underwaterFilter = 0; if (!(qalGenFilters && qalFilteri && qalFilterf && qalDeleteFilters)) return; /* Generate a filter */ qalGenFilters(1, &underwaterFilter); if (qalGetError() != AL_NO_ERROR) { Com_Printf("Couldn't generate an OpenAL filter!\n"); return; } /* Low pass filter for underwater effect */ qalFilteri(underwaterFilter, AL_FILTER_TYPE, AL_FILTER_LOWPASS); if (qalGetError() != AL_NO_ERROR) { Com_Printf("Low pass filter is not supported!\n"); return; } qalFilterf(underwaterFilter, AL_LOWPASS_GAIN, AL_LOWPASS_DEFAULT_GAIN); s_underwater->modified = true; s_underwater_gain_hf->modified = true; }
static void AL_InitUnderwaterFilter() { // Generate a filter qalGenFilters(1, &underwaterFilter); if (qalGetError() != AL_NO_ERROR) { Com_Printf("Couldn't generate an OpenAL filter!\n"); return; } // Low pass filter for underwater effect qalFilteri(underwaterFilter, AL_FILTER_TYPE, AL_FILTER_LOWPASS); if (qalGetError() != AL_NO_ERROR) { Com_Printf("Low pass filter is not supported!\n"); return; } // The effect qalFilterf(underwaterFilter, AL_LOWPASS_GAIN, 1.5); qalFilterf(underwaterFilter, AL_LOWPASS_GAINHF, 0.25); }
void oal_update_underwater() { int i; float gain_hf; qboolean update = false; ALuint filter; if (underwaterFilter == 0) return; if (s_underwater->modified) { update = true; s_underwater->modified = false; snd_is_underwater_enabled = ((int)s_underwater->value != 0); } if (s_underwater_gain_hf->modified) { update = true; s_underwater_gain_hf->modified = false; } if (!update) return; gain_hf = s_underwater_gain_hf->value; if (gain_hf < AL_LOWPASS_MIN_GAINHF) gain_hf = AL_LOWPASS_MIN_GAINHF; if (gain_hf > AL_LOWPASS_MAX_GAINHF) gain_hf = AL_LOWPASS_MAX_GAINHF; qalFilterf(underwaterFilter, AL_LOWPASS_GAINHF, gain_hf); if (snd_is_underwater_enabled && snd_is_underwater) filter = underwaterFilter; else filter = 0; for (i = 0; i < s_numchannels; ++i) qalSourcei(s_srcnums[i], AL_DIRECT_FILTER, filter); }