転送能力 – プログラミング – Home

通知
すべてクリア

転送能力


taki
 taki
(@taki)
ゲスト
結合: 24年前
投稿: 6
Topic starter  

描画命令をビットマップにしてからStretchDIBitsでウインドウに転送するやり方ありますよね
こういうやり方は、普通にウィンドウに描画するのに比べて、なぜ早いのですか?
どこが違うのでしょうか?


引用解決済
トピックタグ
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

この手の解説は、プログラミングの解説をやっているHPにいけば、
詳しくされていそうですけれど、自分で調べてみたりされましたか?
そういう情報も質問時に添えておくとよりベターかと思います。

正確にはビットマップにするというよりメモリ上のDCにするというべきでしょうね。
メモリ上のDCで描画すると描画用のGDIを呼んだときに画面への反映をいちいちしません。
画面への反映(表示)は、メモリ上にある物を画面に合わせて色々と処理しているので
結構重い処理です。
メモリ上のDCの描画することによってその部分の処理が省かれるので描画そのものが
高速になります。転送時の都合上、メモリDC上にビットマップを指定しておいて
メモリDC上の内容を実画面に転送するとその時のみ表示用の変換処理を行います。
その結果、描画が高速になると考えていいかと思います。


返信引用
taki
 taki
(@taki)
ゲスト
結合: 24年前
投稿: 6
Topic starter  

ありがとうございます


返信引用
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

>正確にはビットマップにするというよりメモリ上のDCにするというべきでしょうね。
DC はどれをとってもメモリー上の何者かでしかないはずでしょう。DC は Windows が
提供する共通の描画インターフェースだからです。デバイスコンテキストという抽象的
な境界層を介する事で描画という操作に装置独立性を導入しようとしているのですね
このように考える場合、あなたの上の表現はかなり不正確です。ほとんどの装置では
(その装置に対応した) DC に選択したビットマップに対して描画する(描画結果は DC
に選択したビットマップにしか残らない)のですから


返信引用
masaki
 masaki
(@masaki)
ゲスト
結合: 22年前
投稿: 17
 

GetDIBits()/SetDIBits()系のAPIはWinG由来ですから、基本的には速い
と考えてよいでしょうね。
やねうらお氏のHPにこの辺のディープな話がありますよ。


返信引用
suzuka
 suzuka
(@suzuka)
ゲスト
結合: 23年前
投稿: 46
 

画面を表示する=ビデオカード上のメモリ(以下 V-RAM)へ書き込む、なわけですが。

システムメモリ→ V-RAM は
「違う機械の上に乗っているメモリへの転送」
であるわけで、これがボトルネックになりそうですね。

なら、ここでの転送量を極力抑えるにはどうしたら?

まあ、最速を求めるなら DirectX 使って
V-RAM → V-RAM のような気がしますが。

思いつきなんで間違ってたらゴメンなさい。


返信引用
ましゅ
 ましゅ
(@ましゅ)
ゲスト
結合: 22年前
投稿: 1
 

メモリDCをつかった、描画への高速化なんですが
ウインドウ、ウインドウDC、ビットマップ、メモリDC、データ、描画
という単語を使うとどのような説明が一番適切でしょうか?


返信引用
らら
 らら
(@らら)
ゲスト
結合: 23年前
投稿: 93
 

自分もデバイスコンテキストというものがどんなものなのかしっくりきません

このへんの説明をわかりやすくしてくれる人いたら、うれしいですね


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました