mieki256's diary



2006/06/29(木) [n年前の日記]

#2 [iappli] モザイクとかディザとか

数日前の話。メモするのを忘れてたのでここにメモ。

モザイク。 :

ふと。getRGBPixel() と fillRect() を使うとモザイク処理ができるなと閃いた。ステージクリア時の画面を表示をするところに入れてみた。それっぽい。SFCライク。MDではこんなこと容易にできなかったから、なんだか嬉しい。でも、機種によって処理速度が違うかもしれないと気づいた。この期に及んでバグ報告が増えるのは困る。ということで封印。いつかどこかで使いたいなぁ…。

ディザ。 :

ディザで画面を擬似フェードインできないかなと。半透明 fill ができる機種なら、速度は別にしてフェードインも容易なのだろうけど。DoJa 3.0 では標準ではない・仮にあったとしてもオプションだろうし。ということで昔風にディザを使ってできないものかと。

学生の頃に買った画像処理の書籍を見ながら、ディザの配列データを確認。配列データを元に、setRGBPixel() にどんな値を渡すか、それを求める方法が思い浮かばなくて悩む。どの座標を対象にするかを、(x,y) で持ってしまったらなんか無駄っぽいし。

そもそも、Image の中身に対して getRGBPixel() できないんじゃないかと気がついた。ダメじゃん。ドット単位で描いていけないじゃん。一旦描画してから埋めていく方法では、どう考えても処理速度的に厳しいだろうし。やはりドット単位で描いていかないと。getGraphics() ができれば getRGBPixel() も使えるだろうけど、getGraphics() は createImage() した Image に対してのみ利用可能とドキュメントにあったような…。

あらかじめ、ディザパターンになってるgifを持っておくのはどうか。透明色も指定して。それを画面に対して埋め尽くしていけば…。描画の処理速度が間に合わないか。BGチップで画面を埋め尽くすだけでも処理落ちしてたしなぁ。

createImage() した Image に、表示したい Image の一部を描き込んで、creatImage したほうの Image を毎フレームの描画に使うのはどうか。って、Image にたいして getRGBPixel() できないってさっき書いたばかりじゃん。…む。1dot だけの drawImage() ならどうか。…でも、16x16dotのディザパターンとしても、240x240 の Image に1dotずつ描いていくとなると、(240 / 16) x (240 /16) = 225回も drawImage() することになる。厳しい。フェードインするときだけフレームレートを落とすとか。

なんか色々と難しそう。諦めた。

ていうか。モザイク処理も、よくまあ動いてたな。さすがに 1dot の fillRect() で画面を埋めるのは無謀だと思ったから、最小 4dot ぐらいにして処理してたのだけど。それでも、1フレームに3600回ほど fillRect() してたはずで。…もしかして、fillRect() だけで画面を作ったら、それなりのFPSで作れたりするのだろうか。

あ。モザイクのソレって、エミュレータ上でだけ動作確認してたのだった。実機で動かしたら大変なことになってしまうのかもしれん。

以上です。

過去ログ表示

Prev - 2006/06 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project