シューティングゲームをつくっている者です。
自機がショットを打てるようにしたのですが、ショットの数が100ぐらいになると
25563:グラフィックの数が許容量を越えました終了します
と出力され、強制的に終了してしまいます。
弾は100ぐらいしか出ていないのにどうしてこのようなエラーが出るのでしょうか。
また、どのように対処すればよいのでしょうか。
ご教授お願いいたします。
25563:グラフィックの数が許容量を越えました終了します というエラーについて
-
num
Re: 25563:グラフィックの数が許容量を越えました終了します というエラーについて
自分でネットをあさってみました。
どうやら自機の弾を描画するvoid Shot::draw()で↓のようにしていました
codeタグが間違っていたので修正。 プレビューで確認してから投稿するようにお願いします。 by softya(ソフト屋)
毎フレーム呼ばれる関数内でDerivationGraph()を呼んでいるのが問題なのかと思います
しかし、DXライブラリで指定矩形部分を回転して描画する関数はあるのでしょうか
どうやら自機の弾を描画するvoid Shot::draw()で↓のようにしていました
void Shot::draw( int image ){
if( !m_isLive )return;
DrawRotaGraph(
(int)m_x+80 , (int)m_y ,
1.0 , m_angle ,
DerivationGraph( m_type*32,0,32,32,image ),
true,false);
}毎フレーム呼ばれる関数内でDerivationGraph()を呼んでいるのが問題なのかと思います
しかし、DXライブラリで指定矩形部分を回転して描画する関数はあるのでしょうか
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 25563:グラフィックの数が許容量を越えました終了します というエラーについて
方法としては、LoadDivGraphで初めから別のイメージに分割しておくことです。
サイズ可変じゃないので可能かと思います。
[追記]
隠し関数で、RectとRotaを併せ持った関数がありました、
extern int DrawRectRotaGraph( int X, int Y, int SrcX, int SrcY, int Width, int Height, double ExtRate, double Angle, int GraphHandle, int TransFlag, int TurnFlag ) ;
こちらを使うのも手ですね。
サイズ可変じゃないので可能かと思います。
[追記]
隠し関数で、RectとRotaを併せ持った関数がありました、
extern int DrawRectRotaGraph( int X, int Y, int SrcX, int SrcY, int Width, int Height, double ExtRate, double Angle, int GraphHandle, int TransFlag, int TurnFlag ) ;
こちらを使うのも手ですね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
num
Re: 25563:グラフィックの数が許容量を越えました終了します というエラーについて
ソフト屋さんありがとうございます。
DrawRectRotaGraph();を使ったら解決できました。
DrawRectRotaGraph();を使ったら解決できました。