
class engine_SFX{
public:
Handle s800,p800,s1000,p1000,s1250,p1250;
Handle s1562,p1562,s1952,p1952,s2440,p2440,s3050,p3050;
Handle s3812,p3812,s4765,p4765,s5956,p5956;
static const int deffreq=48000;
engine_SFX(){
s800=xLoadSound("sfx/car/800.mp3");
s1000=xLoadSound("sfx/car/1000.mp3");
s1250=xLoadSound("sfx/car/1250.mp3");
s1562=xLoadSound("sfx/car/1562.mp3");
s1952=xLoadSound("sfx/car/1952.mp3");
s2440=xLoadSound("sfx/car/2440.mp3");
s3050=xLoadSound("sfx/car/3050.mp3");
s3812=xLoadSound("sfx/car/3812.mp3");
s4765=xLoadSound("sfx/car/4765.mp3");
s5956=xLoadSound("sfx/car/5956.mp3");
p800=xLoadSound("sfx/car/800_p.mp3");
p1000=xLoadSound("sfx/car/1000_p.mp3");
p1250=xLoadSound("sfx/car/1250_p.mp3");
p1562=xLoadSound("sfx/car/1562_p.mp3");
p1952=xLoadSound("sfx/car/1952_p.mp3");
p2440=xLoadSound("sfx/car/2440_p.mp3");
p3050=xLoadSound("sfx/car/3050_p.mp3");
p3812=xLoadSound("sfx/car/3812_p.mp3");
p4765=xLoadSound("sfx/car/4765_p.mp3");
p5956=xLoadSound("sfx/car/5956_p.mp3");
}
void soundIt(int mode,int freq){
Handle s1,s2;
float p1,p2;
float v1,v2;
if(mode==0){
//выбираем звуки мощи и определяем необходимый питч.
if(freq>=800){s1=p800;s2=p1000;p1=1.0+0.25*(float)(freq-800)/200.0;p2=1-0.2*(float)(1000-freq)/200.0;}
if(freq>=1000){s1=p1000;s2=p1250;p1=1.0+0.25*(float)(freq-1000)/250.0;p2=1-0.2*(float)(1250-freq)/250.0;}
if(freq>=1250){s1=p1250;s2=p1562;p1=1.0+0.25*(float)(freq-1250)/312.0;p2=1-0.2*(float)(1562-freq)/312.0;}
if(freq>=1562){s1=p1562;s2=p1952;p1=1.0+0.25*(float)(freq-1562)/390.0;p2=1-0.2*(float)(1952-freq)/390.0;}
if(freq>=1952){s1=p1952;s2=p2440;p1=1.0+0.25*(float)(freq-1962)/488.0;p2=1-0.2*(float)(2440-freq)/488.0;}
if(freq>=2440){s1=p2440;s2=p3050;p1=1.0+0.25*(float)(freq-2440)/610.0;p2=1-0.2*(float)(3050-freq)/610.0;}
if(freq>=3050){s1=p3050;s2=p3812;p1=1.0+0.25*(float)(freq-3050)/762.0;p2=1-0.2*(float)(3812-freq)/762.0;}
if(freq>=3812){s1=p3812;s2=p4765;p1=1.0+0.25*(float)(freq-3812)/953.0;p2=1-0.2*(float)(4765-freq)/953.0;}
if(freq>=4765){s1=p4765;s2=p5956;p1=1.0+0.25*(float)(freq-4765)/1191.0;p2=1-0.2*(float)(5956-freq)/1191.0;}
}
if(mode==1){
//выбираем звуки движка без нагрузки и определяем необходимый питч.
if(freq>=800){s1=s800;s2=s1000;p1=1.0+0.25*(float)(freq-800)/200.0;p2=1-0.2*(float)(1000-freq)/200.0;}
if(freq>=1000){s1=s1000;s2=s1250;p1=1.0+0.25*(float)(freq-1000)/250.0;p2=1-0.2*(float)(1250-freq)/250.0;}
if(freq>=1250){s1=s1250;s2=s1562;p1=1.0+0.25*(float)(freq-1250)/312.0;p2=1-0.2*(float)(1562-freq)/312.0;}
if(freq>=1562){s1=s1562;s2=s1952;p1=1.0+0.25*(float)(freq-1562)/390.0;p2=1-0.2*(float)(1952-freq)/390.0;}
if(freq>=1952){s1=s1952;s2=s2440;p1=1.0+0.25*(float)(freq-1962)/488.0;p2=1-0.2*(float)(2440-freq)/488.0;}
if(freq>=2440){s1=s2440;s2=s3050;p1=1.0+0.25*(float)(freq-2440)/610.0;p2=1-0.2*(float)(3050-freq)/610.0;}
if(freq>=3050){s1=s3050;s2=s3812;p1=1.0+0.25*(float)(freq-3050)/762.0;p2=1-0.2*(float)(3812-freq)/762.0;}
if(freq>=3812){s1=s3812;s2=s4765;p1=1.0+0.25*(float)(freq-3812)/953.0;p2=1-0.2*(float)(4765-freq)/953.0;}
if(freq>=4765){s1=s4765;s2=s5956;p1=1.0+0.25*(float)(freq-4765)/1191.0;p2=1-0.2*(float)(5956-freq)/1191.0;}
}
xSoundPitch(s1,deffreq*p1);xSoundPitch(s2,deffreq*p2);
xPlaySound(s1);
}
};
Что я делаю не так? Потому как звук получается потусторонний, а фпс с 80 до 30 проседает. soundIt(int mode,int freq) вызывается каждый кадр.
Каково оптимальное количество полигонов для xEntityAddTriMeshShape?
Кстати, а PhysX сильно сложно с хорсом состыковать?