Search
Categories
Articles
Rainmeter関連
ファイル置き場
お知り合いなど

スポンサーサイト

--.--.-- | スポンサー広告

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Rainmeter] スキン作成時に気をつけてること

2010.12.18 | Rainmeter

0 Comments

たまにはスキン作成自体のお話を……と言っても、自分自身ではほとんどスキンを作らないので、凝ったTipsなんてものはありません。プログラムの関係上、ここはこうしたほうが効率的かも~というTipsをいくつか挙げておきたいと思います。「○○しない」と書いてある場合、してはいけないという意味ではなく、できるならそうしないほうがいいという意味で捉えてください。

1) むやみにDynamicWindowSize=1を使わない

DynamicWindowSize=1が設定されていると、Update間隔ごとに全Meterの位置・サイズを計算し直して、ウィンドウのサイズが変わらないかどうかチェックします。もし最初からウィンドウサイズが変わらないようにスキンが設計されているのであれば、この処理は無駄になります。
DynamicWindowSize=1を指定しないとウィンドウサイズは固定のままなのかというと、そういうわけでもなくて、!RainmeterShowMeterやMoveMeterなどのMeterの位置やサイズを弄るbangを使うことで再計算フラグが立ち、必要であればウィンドウサイズが変更されます。ただし、DynamicVariablesを使っていると、bangを使わずにMeterの位置やサイズが変わる可能性があるため、再計算が起こらないと困ることになります。素直にDynamicWindowSize=1を指定しておいたほうがいいでしょう。
余談ですが、アニメーションスキンを作る場合にも、ウィンドウサイズは固定にしておいたほうがいいです。ウィンドウサイズの縮小→拡大→縮小が発生するようなスキンだと、→縮小のときは問題ないのですが、→拡大のときに非常に遅くなります。

2) Backgroundを使わない

BackgroundMode=0と3ではBackground=に指定した画像を背景として扱いますが、それ以外に、「R255,G0,B255」(紫)や透明な領域をクリップする(ウィンドウのリージョンを切って、変形ウィンドウを作る)という処理が入ります。さらにDynamicWindowSize=1が指定されていると、場合によってはこの処理がむちゃくちゃ重くなります(透明不透明が斑模様になるようなスキンとか)。
BackgroundMode=0はウィンドウのサイズを画像サイズに固定、=3では特殊なスケーリングと、代用手段がないものでもありますが、こだわらないならMeter=Imageで代用しちゃってもいいと思います。
(※Rainmeter 1.4 betaには、Meter=ImageにBackgroundMode=3と同じスケーリング機能を追加してあります。BackgroundMarginsと同じように、ScaleMarginsを設定してください)

3) BackgroundMode=2を使わない

BackgroundMode=2は指定色で背景を塗りつぶすモードです。そのためだけにウィンドウサイズ分の画像バッファを作成し、メモリを消費します。必要なサイズが640x480だとすると、約1MBほどの消費です。Meter=ImageでSolidColor=を使って塗りつぶす場合はバッファを作らないので、BackgroundMode=1でMeter=Imageを併用したほうがメモリ消費量を減らせます。
わざわざバッファを用意していた理由はわかりませんが、グラデーション効果を使ったときに多少なりとも負荷がかかるので、毎回描画するよりはバッファに描いて、それを再描画時に使ったほうが軽かったのかもしれません。一応、処理時間もチェックしてみましたが、直接描画とバッファ描画でそれほど変わらないどころか、グラデーションを使わないなら直接描画したほうが速かったので、今は直接やっちゃったほうがいいのかもしれません。
(※Rainmeter 1.4 betaではバッファを作成せずに直接描いて、メモリ消費量を減らす方向に調整しました)

4) Meter=Stringで固定文字列のみを表示するときは、Text=ではなくPrefix=を使う

MeasureNameを設定せず、固定文字列のみを表示するときには、例えばText="blah blah blah"と書くよりは、Prefix="blah blah blah"としたほうが効率的です。Text=は%1などのMeasure値を混ぜたいときのみに使います。
たまにMeasureNameが設定されていて、かつTextに"%1"のみを書いているスキンを見かけますが、無駄な処理が入るので指定しないほうがマシです。

5) SolidColor=はどのMeterでも使える

Meter=Imageでしか使えないと思っている人もいるっぽいので、一応。どのMeterでも矩形塗りつぶしに使えます。StringにActionを設定したいときに、SolidColor=0,0,0,1を設定してよく使います(透明に見える不透明で、当たり判定を付ける)。
分かりやすい色を付ける事で、Meterのサイズをチェックする用途にも使えます。

6) Unicodeを活用する

以前にも書きましたが、スキンファイルの文字コードにはUnicode (BOM付きのUTF-16LE)も使えます。個人的に使う分には問題は起きにくいですが、日本語を含むShift-JISのスキンを他言語版Windows上で動かすと文字化けしてしまいますので、そういった用途ではUnicodeにしてしまいましょう。海外で配布されている欧文スキンでも、たまに日本語版Windowsで動かすと文字化けすることがあります(Gnometer旧バージョンのFeedsに定義されてたSubstituteとか)。多バイト文字を含む場合だけでなく、文字コード上の問題もいろいろと解決してくれるので便利です。
ただ、なんでもかんでもUnicode化すればいいのかというと……文字コードの関係上、Shift-JISで1バイトの文字でもUnicodeでは2バイト使うわけで、ファイルサイズも単純に2倍近くになってしまいます。個人的には、どっちでもいいときはShift-JISのままにしてあります。

 

以下はRainmeterを使う上でやっておくといいかも~な項目です。

1) 使わないスキンファイルは退避させておく

スキンの作成とは関係ありませんが、Rainmeterは起動時やRefreshAll時に、Configsメニュー用のキャッシュ作成や、スキン読み込み用のファイルパスなどを全てキャッシュするために、スキンフォルダ内の全.iniファイルをチェックします。スキンフォルダには最低限のものだけ残して、後は退避させておくと、ほんの少しですがファイル探索処理量とメモリ使用量を減らせます。
同様に、Rainmeter.ini内の無駄なエントリを削除するのも効果がある……ような気がして今まで削ってたんですが、こっちはプログラム上はあまり効果ないかもしれません。気分的にスッキリする程度です。

2) ログは(普段使いでは)オフにしておく

ログ出力を有効にしていると、ログを書き出している間は若干ですがパフォーマンスが下がります。スキン作成時や調査時以外では、ログ出力をオフにしておく(またはログファイルを削除しておく)といいと思います。スキンによってはUpdate毎にエラーが出っぱなしになっていることもあって、資源的にも精神衛生上もよくありません。

 

……もう少しくらいあるかな~と思ってたんですが、少なかったですね。
どれもこれも、「これをすると良くなる!」と断言できるものではないので、いろいろ試してみてください。

« [Rainmeter-dev] 負荷を減らす取り組み [Rainmeter] Rainmeter 1.3 »

- Comments
0 Comments

管理者にだけ表示を許可する
- Trackbacks
0 Trackbacks


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。