HSPDishで表示カラーの変更に挑戦


2017年 5月19日~23日
 
 
 ああ、どうにも立ち上がらない、やる気がしないと言うかエンジンがかからない。
 しばらくやらないと、ねえ。
 プロジェクトの立ち上がりって途方に暮れます。
 どこからとっついたら良いのか分からなくてダラダラしてます。
 こうなるとあせってくるよねえ、一歩一歩破滅に近づいてますしね(笑)

 そんな訳でとりあえず表示色を数値で変更できるかどうかから研究してみることにした。
 カラーパレットみたいな事ができるといいなと思う。

 例えば勢力の表示色の違いを一々グラフィックで用意するのめんどいので。

 
 マニュアルを見てみると、HSP3.5βからは gmulcolor命令で色を乗算できるとの事、やるな。

 とりあえずテストで髪の色を変えるプログラムを作る。
 
 
 ALFARで適当に書いて

 機能を使うには PNGじゃないといけないらしいので、グラフィックソフトで BMPをPNGに変換する。

 まて、たしか PNGで保存は ALFARでも出来たはず。
 
 

ここで透明色にするパレットのNo.を指定する

 保存で PNGを選ぶ

 するとこの画面になるので、ここでも透明色のパレットを選べる

 
 
テスト画像

 テストしたければ右クリックで保存で使えるはず。

 上の素体を表示した後、下の白い髪に gmulcolorで色を変えたものを上書きする感じだ。
 
 
テストプログラム

PC上ではこれでうまくいく

 256だと 0扱いなのかな

 gmode 2のままだと下の画像は無視されて完全に塗りつぶされるみたい。
 
 
 体を gmode 2、髪を gmode 3,,,128(半透明合成)すると次のようになる。

 ややこしいけど、元の黄色い髪に、白に赤を乗算した色を128(50%)の割合で加算(?)合成している事になると思う。

 128が半値、255が 100%なので、255にするとgmode 2と同じ結果になる。


 (ややこしいけど、画面の 128は白い髪に乗算する赤の値)

 gmode 4はたぶん 3と同じ。

 5は加算(黄 + 赤でオレンジっぽくなってる)

 6は減算(黄 – 赤で緑)

 7は Dishでは機能しないようだ。
 
 
 まとめ
 gmode 2 塗りつぶし(αチャンネルの透明部分を塗らない)
 gmode 3,4 半透明合成(どちらでも同じ)
 gmode 5 加算
 gmode 6 減算

 0と 1は αチャンネルの透明が無視されて透明にならず、その部分は黒(?)で塗りつぶす。
 2~6は αチャンネルの透明部分は透明になる。

 こんな所かな。
 
 
アンドロイド実機で試してみる

 ソース

 ビルドして、転送して、実行、と。
 
 
 できました

 gmode 3

 gmode 5

 gmode 6

 6、アレ? 5と同じだけど。

 ふむふむ、マニュアルによると『現在のバージョンでは、android(NDK)ランタイムにおいてgmode 6(色減算)はサポートされませんのでご注意ください。』との事、ほほー。
 
 
 という事で、アンドロイド実機でも gmode 2(α透明抜き描画),3(半透明合成),5(加算)とできました。

コメントを残す

メールアドレスが公開されることはありません。