大量の弾の描画を速くしたいのですが、graph_bulletにて気になる箇所がありましたので質問させていただきます。
色々とコメントアウトしちゃってますが、以下のgraph_bullet中の2つのfor文がどうもネックになっているように思いました。それぞれSHOT_MAX=30とSHOT_BULLET_MAX=1000とサンプルのままですが、実際に合計1000個発射しない弾幕でも1000個分の処理をしているので、どうもここの箇所が重くする原因の一つになっているような気がします(解釈を間違っていたらすみません;)。実際にSHOT_BULLET_MAX=300としたらある程度軽くなるのですが、これは根本的な解決ではないですよね。。。
//弾丸の描画 void graph_bullet(){ int i,j; //SetDrawMode( DX_DRAWMODE_BILINEAR ) ;//線形補完描画 for(i=0;i<SHOT_MAX;i++){//敵の弾幕数分ループ if(shot.flag>0){//弾幕データがオンなら for(j=0;j<SHOT_BULLET_MAX;j++){//その弾幕が持つ弾の最大数分ループ if(shot.bullet[j].flag!=0){//弾データがオンなら //if(shot.bullet[j].eff==1) //SetDrawBlendMode( DX_BLENDMODE_ADD, 255) ; DrawRotaGraphF( shot.bullet[j].x, shot.bullet[j].y+FIELD_Y, 0.567, 0, img_bullet[shot.bullet[j].knd][shot.bullet[j].co[/url],TRUE,0); //if(shot.bullet[j].eff==1) //SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ; } } } } // SetDrawMode(DX_DRAWMODE_NEAREST);//描画形式を戻す }
そこで、この管理方法ではなく、他に効率の良い処理をする方法はあるのでしょうか?