🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

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

#17
From: HIRAO
Date: Thu, 30 Dec 1999 00:00
82 lines
5465 bytes
林 知紀 wrote in message <84ci6q$57i$2@nw042.infoweb.ne.jp>...
>
>僕の使ってるDelphi4はStandard版なので無理みたいですね。
># VCLのソースってパスカルのソースをパスカルで書いてあるんですか?
># なんか循環参照みたい

 パスカルのソースではないです(^^;;
VCLはパスカルで書いてあると言うのが正解です。
DelphiのためにVCLが作られたわけで、そのDelphiのパスカルで使うクラス
としてパスカルで書かれているわけです。その方が理解しやすいでしょうから…
 それをC++で使うようにして作られたシステムが、C++Builderな訳で、
それをC++ヘッダーを用意することによってC++で使えるようにしてあります。
本体はパスカルソースで、それをデバッガーでトレースすることができます。
(Delphiコンパイラー自体はC系の言語で作られているのでは?)

>>  TImageの中のPictureを解放するだけで良かったのではないかな…?
>> あとはTImageに書き込みをすれば、自動的にそのときの画面モードと大きさ
>> で作られると思います。これ以上はパスカルはわからないので方法が…
>>  あと、TImageのCanvasに描くべきなのか、TImageのPictureのCanvasか
>> その辺はよく覚えていません。
>
>Image1.Picture := nil;
>では標題の問題点は解決せず、
>Image1.Picture.Free; もしくは Image1.Canvas.Free; だと
>その後の Create の方法が分からず成功していません。

 nilするだけではリークしてしまいますので、Freeをして、
nilですね、あとはTImageに書き込みをすれば新しくPictureが
TImageによって自動で作られると思います。
 もしこれが勘違いだった場合(^^;;(実際に試しているわけではないので…)
上記のように解放して、画面モードの変更後に新しくPictureを
作ってそれをTImageに設定すると画面モード変更後の物になるの
ではないかな…
 もしPictureでだめな場合はPictureの中のBitmapを同様の処理に
すると良いかな…
 それでもだめでしたら、MSのWin32のヘルプを見て、一連の解
決法を考えるしか…
HDC hdc = CreateCompatibleDC(NULL);

>大きいもの(VGAサイズ)が3,4枚くらいまでだと
>目にもとまらない速さで速度差の比べようがありませんでした。
>シューティングゲームくらいになると(そして非力なパソコンだと)
>違いが分かるのかもしれません。
>特に速度差の出るものだけでもAPIにすれば
>労力対効果が大きくなるのでしょうね。

 グラフィックのデーター量が大きいとそれをビデオメモリーに転送
するのに時間がかかりますから、それを扱うためにVCLがデーター転
送以外にいろいろな処理をする時間と割合の差が大きくなるから無視
できると言うことで、データー転送に時間がかからない小さい画像の
場合は、VCLがする余分な処理の時間の割合が多くなりますよね?
 110の内の10を気にする必要はあまりないのではと言うことで、
20の処理時間の10を削れる処理を100回繰り返す場合は、10
は削った方がよいですよね? そう言うことです。
(Win32のGetTickCount(VOID)を使って計るとよくわかります)

>でもDelphiの良さはプログラムコードの安全性にあるという話をよく聞くので
>できるだけAPIやポインタは使わずに
>コードを書いていきたいと思っています。

 SelectObjectとか面倒なことしないでよいですからね…
MFCのレベルでもそう言うことしないといけないみたいです。
(この辺でうっかりするとあっという間にリソースがなくなると言うことに
(^^ )

>あと、コンパイルの速さが段違いだと聞きましたが本当なのでしょうか
>(確かにDelphiのコンパイルはコンパイルしていることに気づかないくらい速い)

 Cはいろいろとファイルを扱いますので、そう言うことになるんですね…
うちの場合はC++Builderで部分的に再コンパイルするだけで、数十秒ぐらいは
かかります。(IDEでプロパティーの変更ぐらいでそう言うことになってしまい
ますのでこう言うときはちょっといらいらします(^^;; STLのせい?
最低で数万行ってコンパイルしている… 再構築は数十万行〔30秒から1分以
上〕)
 あとMLで今、出ている話ですが、Cヘッダーの中のマクロの識別子が
メソッドなどの識別子とぶつかるなどと言う問題が発生しているようです。

 TImageを使うのをあきらめるのは早すぎるのではないかと思います。


平生 ゆう
hirao@dog.net0726.or.jp
Technical Details
Message-ID: <84fins$r2e@www.net0726.or.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> <84ci6q$57i$2@nw042.infoweb.ne.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: "HIRAO" <hirao@dog.net0726.or.jp>
Subject: Re: 画面モード切替後のグラフィックパフォーマンスの低下
Date: 1999/12/30
Message-ID: <84fins$r2e@www.net0726.or.jp>
X-Deja-AN: 566473303
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> <84ci6q$57i$2@nw042.infoweb.ne.jp>
Content-Type: text/plain; charset="iso-2022-jp"
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3155.0
Organization: NET0726
Mime-Version: 1.0
Newsgroups: japan.comp.lang.delphi,fj.comp.lang.pascal,fj.os.ms-windows.programming