[OSASK 6626] Re: VGA fast 32bpp putbox

 こんにちは、I.Tak.です。

From: Hidemi KAWAI <kawai !Atmark! imasy.org>
Subject: [OSASK 6622] Re: VGA fast 32bpp putbox
Date: Thu, 30 Oct 2003 14:47:04 +0900

>   一つは、ウィンドウ移動モードでも描画を停止させないことです。こ
> れをやるには描画ルーチンの衝突判定ルーチンを改造しなければいけま
> せんが、それができると、ウィンドウ移動中も表示が止まらないので非
> 常にかっこいいです。

 ウィンドウ移動モードの枠もマウスカーソルと同じように扱うという
ことは, 描画したあとで, 上書きされた部分に枠を描き直すわけですね。
そんな特別処理をグラフィックドライバ (6つもあります!) にほいほい
入れてしまうのはちょっと……

>   もう一つは、とりあえず停止はさせるが、差分再描画シグナルを送っ
> てやることです。これだと、描画禁止期間中に更新のなかったテキスト
> ボックスやグラフィックボックスについては、再描画を抑制できます。
> ただしpioneerを差分再描画に対応させないと、効果はありません。結
> 構しんどそうです。

 出た! 差分描画シグナル。これが良さげです。コンポーネントにフラグ
をつけるだけですね。


From: Hidemi KAWAI <kawai !Atmark! imasy.org>
Subject: [OSASK 6623] Re: VGA fast 32bpp putbox
Date: Thu, 30 Oct 2003 14:59:32 +0900

>   「putboxと同じアルゴリズム」というのは、putboxの4bitカラー版と
> 同じアルゴリズム、という意味です。つまり、スタック上に最大800バ
> イトのワークエリアをとって、ここに1ライン分のタイリング後のデー
> タをまず生成し、それを4bitカラー転送ルーチンと同じ方法で描画する
> わけです。これがアルゴリズム的にはベストであろうと思っています。
> たぶんI.Tak.さんも同じ方法だろうと想像しています。

 簡単に書くと
    maskbuf[color] |= bit;
    bit >>= 1;
みたいな処理の8回繰り返しでビットパターンを作って描画しています。
実際にVRAMにアクセスするときに maskbuf[i] == 0 を飛ばす処理が面倒な
気がしますが, 他の方法で無駄を減らそうとしても結局処理時間は同じっぽい
ので, 簡単で小さくなる方法に落ち着きました。4bitのputboxも同じ処理
で済ませてしまおうかと。


I.Tak. <g240845 !Atmark! mail.ecc.u-tokyo.ac.jp>
http://user.ecc.u-tokyo.ac.jp/~g240845/



ML番号でジャンプ
ML単語検索