🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: japan.comp.lang.delphi
Article #14

Re: 画面モード切替後のグラフィックパフォーマンスの低下

#14
From: 林 知紀
Date: Wed, 29 Dec 1999 00:00
94 lines
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-mail
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>

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