Article View: japan.comp.lang.delphi
Article #14Re: 画面モード切替後のグラフィックパフォーマンスの低下
From: 林 知紀
Date: Wed, 29 Dec 1999 00:00
Date: Wed, 29 Dec 1999 00:00
94 lines
5802 bytes
5802 bytes
HIRAO <hirao@dog.net0726.or.jp> wrote in message news:84atrv$csu@www.net0726.or.jp... > 林 知紀 wrote in message <8451vt$ojp$1@nw042.infoweb.ne.jp>... > > > >HIRAO <hirao@dog.net0726.or.jp> wrote in message > >news:842u63$fpk@www.net0726.or.jp... > > >> (ソースが付いていましたらデバッガーで追いかけてみると良いかも、 > >> せっかくパスカルのソース読めるのですからもったいないですよ(^^;;) > > > >すいません。ほぼ初心者なのでHIRAOさんが何を言わんとしてるのか > >よく分からないのですが、もしかしてCPUデバッガのことなんでしょうか? > >だとしたら今の僕には手におえない・・・ > > Professional版以降でしたらVCLのソースが付いていると思いますので、 > それをデバッガーで追ってみるとVCLが何をしているかわかると思います。 > おいらの場合はC++を使っているものですから、VCLのソースがパスカル > と言うことでパスカルユーザーがうらやましいと思ったりしています(^^;; > トレースするときは感で読んでいたりします(今度は立場がが逆(^^ ) 僕の使ってるDelphi4はStandard版なので無理みたいですね。 # VCLのソースってパスカルのソースをパスカルで書いてあるんですか? # なんか循環参照みたい ## 今回APIを試したおかげでPascalのCardinalとC++のDWORDが ## 同じ意味だと知りました。 > >> それでもだめでしたら、TImage自体を動的生成するようにしてみるとか… > > > >最初はその方法を考えたのですが、 > >メモリから開放するのは簡単に出来たんですけど > >動的生成がうまいこと出来なくて > >とりあえず別の方法を試してみたら > >TForm.Canvasでうまくいったので > >そちらのほうは追求してません。 > >だれか動的生成の詳しい方法を教えてくれたら > >その先を実験してここにレポートします。 > > TImageの中のPictureを解放するだけで良かったのではないかな…? > あとはTImageに書き込みをすれば、自動的にそのときの画面モードと大きさ > で作られると思います。これ以上はパスカルはわからないので方法が… > あと、TImageのCanvasに描くべきなのか、TImageのPictureのCanvasか > その辺はよく覚えていません。 Image1.Picture := nil; では標題の問題点は解決せず、 Image1.Picture.Free; もしくは Image1.Canvas.Free; だと その後の Create の方法が分からず成功していません。 > >当初APIを直接呼んだときに早くなったように感じたのは > >どうも気のせいだったような気がしてきました。 > >ただ > >TImage.Canvas.Draw(0,0,Bitmap);と > >TPaintBox.Canvas.Draw(0,0,Bitmap);には > >速度の差が生じているように感じます。 > >(TImageのほうが遅い) > > 最初に書いたようにVCLのソースを追えば、APIだけの物に比べて > 余分なこともいろいろやっていることがわかりますので、時間がかかると > いうのは間違いないです。描画する物のサイズが大きい場合は無視できる > 時間と言うだけで…(シューティングゲームとかのスプライトみたいな処 > 理をするのでしたらAPIを使った物の方がよいでしょう。たくさんの小 > さな部品を扱う場合は差が出ますので…) > TImageの場合も、他の方がかかれているように、無効化のメッセージが > 飛ばないとTImageの中のバッファ用ビットマップが描画されませんので… > 逆に言うとそのメッセージが飛ばないようにプログラムをして、その間に > (プロパティーやメソッドやプロシージャーを抜けるなどをしなければ…) > TImageを書き換えると、画面がちらつかないで書き換えができます。 大きいもの(VGAサイズ)が3,4枚くらいまでだと 目にもとまらない速さで速度差の比べようがありませんでした。 シューティングゲームくらいになると(そして非力なパソコンだと) 違いが分かるのかもしれません。 特に速度差の出るものだけでもAPIにすれば 労力対効果が大きくなるのでしょうね。 でもDelphiの良さはプログラムコードの安全性にあるという話をよく聞くので できるだけAPIやポインタは使わずに コードを書いていきたいと思っています。 あと、コンパイルの速さが段違いだと聞きましたが本当なのでしょうか (確かにDelphiのコンパイルはコンパイルしていることに気づかないくらい速い) それではそろそろ僕のパソコンは年賀状モードに突入します。(今頃か!) 皆様、良いお年を。 くるくるくるくるくるくるくるくるくるくるくるくる 林 知紀 fwhx4467@mb.infoweb.ne.jp くるくるくるくるくるくるくるくるくるくるくるくる
Technical Details
Message-ID:
<84ci6q$57i$2@nw042.infoweb.ne.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<83ou3d$jvv$1@nw041.infoweb.ne.jp> <3860CAFB.E16988D7@po.teleway.ne.jp> <83u3iq$i92$1@nw041.infoweb.ne.jp> <842u63$fpk@www.net0726.or.jp> <8451vt$ojp$1@nw042.infoweb.ne.jp> <84atrv$csu@www.net0726.or.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 110a07,f2bd283c630b1b34 X-Google-Attributes: gid110a07,public X-Google-Thread: feb2e,f2bd283c630b1b34 X-Google-Attributes: gidfeb2e,public X-Google-Thread: fecfa,f2bd283c630b1b34 X-Google-Attributes: gidfecfa,public From: 林 知紀 <fwhx4467@mb.infoweb.ne.jp> Subject: Re: 画面モード切替後のグラフィックパフォーマンスの低下 Date: 1999/12/29 Message-ID: <84ci6q$57i$2@nw042.infoweb.ne.jp> X-Deja-AN: 565975427 Content-Transfer-Encoding: 7bit References: <83ou3d$jvv$1@nw041.infoweb.ne.jp> <3860CAFB.E16988D7@po.teleway.ne.jp> <83u3iq$i92$1@nw041.infoweb.ne.jp> <842u63$fpk@www.net0726.or.jp> <8451vt$ojp$1@nw042.infoweb.ne.jp> <84atrv$csu@www.net0726.or.jp> X-Priority: 3 Content-Type: text/plain; charset="iso-2022-jp" X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300 X-Complaints-To: - X-Trace: nw042.infoweb.ne.jp 946457626 5362 202.219.29.31 (29 Dec 1999 08:53:46 GMT) Organization: Nifty News Service X-MSMail-Priority: Normal Mime-Version: 1.0 NNTP-Posting-Date: 29 Dec 1999 08:53:46 GMT Newsgroups: japan.comp.lang.delphi,fj.comp.lang.pascal,fj.os.ms-windows.programming