ページ 11

画像の取り込み

Posted: 2009年12月11日(金) 15:13
by 77
画像の取り込みついて

何回も画像を取り込む場合
関数の中の画像を取り込む変数はatuoかstatic
どちらが望ましいですか?
あと、ChangeCallback( void *Data )関数で最大化すると
画面が変で明らかに点滅みたいに頻繁にフラッシュします。解決策があるのか
私だけの現象でしょうか?

Re:画像の取り込み

Posted: 2009年12月11日(金) 15:28
by Mist
> 何回も画像を取り込む場合

情報が不足しすぎでケースバイケースとしか答えようがありません。

> あと、ChangeCallback( void *Data )関数で最大化すると

少なくとも私が組んだプログラムでは発生しませんでした。
http://www.play21.jp/board/formz.cgi?ac ... 3193#43193

Re:画像の取り込み

Posted: 2009年12月11日(金) 15:41
by 77
while文の中でまわっている
画像を表示する関数をです。多くのデータをいちいち関数内で宣言してる
ならstaticのほうが効率的かなと思って・・・。
あと最大化は静止画ならフラッシュしないんですが
動かすとフラッシュするんでよ。コールバック関数じゃなくて
最大化に問題があるのかも?って思っています。FPSも最大化すると
落ちるので原因がよくわからないんですよ。

Re:画像の取り込み

Posted: 2009年12月11日(金) 15:53
by Mist
> 変数について

あなたの言う効率というのがどういうことを期待しているのかよくわかりませんが、一般的に変数をグローバル化して使いまわすのは致命的なバグの要因にしかなりません。

質問の意図を読み違えていたようなので修正しました。

効率というのを速度として考えているのであれば(環境によるけど)autoのほうが早い可能性が高いです。
static変数は一般的に静的領域というメモリ上に確保されますが、autoの場合状況によってはCPUレジスタ
で済んでしまう場合もありますので。
あと、変数をauto宣言した場合とstatic宣言した場合では、マルチスレッド環境で複数スレッドから関数コール
した場合や、再帰呼び出しした場合の動作が異なるので注意してください。


> フラッシュ

あなたのプログラムに問題があると思われますが、言葉の説明から原因を見つけることは不可能と思われます。
現象を確認できるソースかプロジェクトを提示してください。

Re:画像の取り込み

Posted: 2009年12月11日(金) 16:44
by 77
伝わらなくてすいません
例えば
function(){
while(a<=100){
static int a = LoadGraph("a.png"); // ☆
DrawGraph( 30, 330, a, TRUE) ;
a++;
}
}
上の☆の部分の宣言はconst、 int、static intのどれが効率よいかって話です。
毎回宣言するintでは動きが遅くなるんですよね。

>ソースかプロジェクトを提示してください
プロジェクトは全部ってことですか?

Re:画像の取り込み

Posted: 2009年12月11日(金) 16:51
by 77
間違いました
int a=0;
function(){
while(a<=100){
static int b = LoadGraph("c.png"); // ☆
DrawGraph( 30, 330, b, TRUE) ;
a++;
}

平たく言えば画像を収納する変数についてですけど
グローバル変数は使わない方がいいって聞いたので

Re:画像の取り込み

Posted: 2009年12月11日(金) 17:05
by Mist
> 毎回宣言するintでは動きが遅くなるんですよね。

その例で言えば、aはレジスタに用意されそうなのでautoのほうが早そうですが、あまり深く考えても意味がない気がします。
画像のロードや表示に掛かる時間に比べれば、変数の実態確保に掛かる時間なんて無いに等しいものです。
例えば大阪ー東京間を移動するためのルートを考えるのに、こっちのルートのほうが0.001秒早く着く、なんて話しても無意味でしょう。

> プロジェクトは全部ってことですか?

はい。
回答者の方で現象を確認できる物が欲しいです。
全く同じプロジェクトを使用して、こちらで同じ現象が発生しないようであればあなたのPC環境の問題ってことがわかりますので。

Re:画像の取り込み

Posted: 2009年12月11日(金) 17:38
by 77
そうですか、int型で動かすと以下のようなエラーをはいてとまるんですよね。
size:80(0.078kb) file:DxGraphics2.cpp line:1768 ID:773 addr:11391b78 data:<................> [01 00 00 00 05 00 00 00 01 00 00 00 00 00 01 01]
でもstaticやグローバル変数だと高速にうごくんですよ。うーん分かりません。

プロジェクトは人のデータも入ってるのでアップするのはちょっと無理です。

Re:画像の取り込み

Posted: 2009年12月11日(金) 17:54
by Mist
> そうですか、int型で動かすと以下のようなエラーをはいてとまるんですよね。

問題はもっと他の部分にあるのではないでしょうか。(そこではないところでメモリ破壊しているとか)
staticやグローバルにするとautoとは配置されるメモリの場所が変わるので、問題が隠蔽されているだけのような気がします。
ソースが無いので具体的な回答は無理ですが・・・。

オフトピック

Posted: 2009年12月11日(金) 19:41
by dic
オフトピックですが
日本語が気になったので・・・

間違いました 間違えました

http://www.google.co.jp/search?hl=ja&lr ... CC8Q1QIoAA

スルーしてもらってもかまいません

Re:オフトピック

Posted: 2009年12月12日(土) 01:25
by ROM
いつも2chと同じ質問をここでするのはどうかと

Re:オフトピック

Posted: 2009年12月12日(土) 01:55
by Dixq (管理人)
ROMさんの仰ることの他に、規約違反を何度もされているようです。
規約をお読みいただければ何が他に規約違反か解ると思います。
規約に沿った質問をお願いします。
何が規約違反かわからない場合はお聞きください。