0

アプリケーションで少なくとも 120 fps を取得しようとしていますが、現在は約 30 fps です。球の作成方法を削除すると、fps は 120 になります。

私の球体メソッドは、すべての球体をチェックして、範囲外かどうかを確認します。構造体を使用してもパフォーマンスは向上しませんでした。

 xc = x coord
 yc = y coord
 zc = y coord
 xd = x direction
 yd = y direction
 zd = z direction

効率を大幅に向上させる方法はありますか?

このコードは各フレームと呼ばれます。

void createSpheres()
{
     for(int i = 0; i < spheres.size(); i+=6)
    {
         xc = spheres[i];
         yc = spheres[i+1];
         zc = spheres[i+2];
         xd = spheres[i+3];
         yd = spheres[i+4];
         zd = spheres[i+5];


                 if((xc+xd)>= 45 || (xc+xd)<= -45)
                 {
                              xd = 0-xd;
                 }
                 if((yc+yd)>= 9.5 || (yc+yd)<= -9.5)
                 {
                              yd = 0-yd;
                 }
                 if((zc+zd)>= 45 || (zc+zd)<= -45)
                 {
                              zd = 0-zd;
                 }
                 glEnable(GL_TEXTURE_2D);
                 glBindTexture ( GL_TEXTURE_2D, texture_id[6] );
                 glPushMatrix();
                 glTranslatef( xc+(xd/10), yc+(yd/10), zc+(zd/10));   
                 glRotatef( -80,1,0,0); 
                 glScalef( 0.10f, 0.10f, 0.10f); 
                 gluQuadricTexture(quadric,1);
                 gluSphere(quadric,10.0,72,72); 
                 glPopMatrix();
                 glDisable(GL_TEXTURE_2D);
                 spheres[i] = xc+(xd/10);
                 spheres[i+1] = yc+(yd/10);
                 spheres[i+2] = zc+(zd/10);
                 spheres[i+3] = xd;
                 spheres[i+4] = yd;
                 spheres[i+5] = zd;  

    }
}
4

1 に答える 1