はかせのラボ

なんか好きなこと色々書きます

DirectX エフェクト作りたかったけど画像透過から詰まる

あいさつ

どうも、はかせです。
体調は依然微妙ですが、いつまでもグダグダ休んでも仕方がないので
今日からまったり再開していきます。

まずは作業の確認

休み明けの最初の作業といえば最後にやった作業のおさらいと
今後やることの確認ですよね。
幸いやったことはブログに上げてましたし、
コードはgithubに上げてたのでおさらいはさして問題にはなりませんでした。

さてどうやら私は休む前にコードの整理をしていたようです。
今後のタスクとしては
・エフェクト実装
・コンテニュー
・外部管理機能の強化
・各種ボーナス実装

こんな感じのようです。

優先順位として一番上にいるエフェクトから手を付けるのが良さそうです、

エフェクト作り

以前レーザーエフェクトを作ろうとして挫折した苦い思い出があるタスクです。
パーティクルの実装は今の実力では無理なのは体験済みなので
敵や自機の爆破エフェクトを作っていこうと思います。

これなら2~3枚程度の爆破差分の画像を用意して
それぞれを適当に大きさや回転を変えながら透明にして
切り替えればそれっぽく見えそうです。

大きさや回転は今まで弾やら何やらで散々やってるので
出来ることはわかっているので透明化をやってみます。

透過ってどうやるんだろう

いつぞやのタイミングで画像の色は変えれるようにしました。
hakase0274.hatenablog.com

RGBの値はそのままですがα値も設定できるようにしています。
Unityとかでα値を弄れば画像が透明になりました。
なのでこの値を弄ればいけそうです。

//RGBAを設定
rightOptionTex->SetDefaultColor(1.0f, 0.0f, 0.0f, 0.5f);

実行結果です。想定では右の赤いはんぺんが半透明になるはずです。
f:id:hakase0274:20190121233604p:plain


・・・・・あ、あれ?
おかしいな半透明になるどころか色に1ミリの変化もないぞ?
これはまた色々調べなおして検証実装をする必要がありそうですねorz

あとがき

今回は爆破エフェクト作り始めでした。
うーんα値弄るだけでは透過されないんですね。

何か設定をする必要があるのかシェーダーを弄る必要があるのか
まぁどちらかですよね。
ググりながらやってみます。

それでは今回はこの辺でノシ

プログラミング 型推論

あいさつ

どうも、はかせです。
今日も体調が(ry

ということでよく話題に上がる
型推論について私の考えを書きたいと思います。

型推論

名前の通り型を推論することです。
例えば

float hoge = 1.0f;

hogeというfloat型の変数に1.0fという値を入れています。

ただこれ少し冗長に思いませんか?
1.0fはどう見てもfloat型です。
(末にfってついてるしね)
だったらわざわざ型を宣言しなくても中に入れる値で逆算できそうじゃないですか?
それが型推論です。
さっきのコードは型推論で書くと以下のようになります。

auto hoge = 1.0f;

hogeの前についてたものがfloatからautoに変わっただけです。
難しくないでしょう?

型推論は使うべきか

便利な型推論なんですが使うべきかどうかということで
結構意見が分かれます。
私が知っている範囲でメリット・デメリットをまとめてみます。

メリット

・コードの書き方がそろう
・明らかにわかるものをわざわざ書くのは無駄
・言語によっては速度が速くなる

デメリット

・パッと見で変数の型がわからない

私の意見

私はガンガン使うべきだと思います。
というのもデメリットよりメリットが多いと思っているからです。
まぁ上に上げた私が知っているメリットデメリットを見れば一目瞭然ですね。

もちろんコーディング規約だとかで使えない場合もあると思います。
ただ使えないわけでないなら使うべきだと思います。
何よりも書き方がそろうのがいいです。

毎回ローカル変数を定義する度に型を宣言していくのははっきり言ってめんどうです。
floatやint程度ならまだしもジェネリクスやテンプレートといったものを使った
長ったらしい型を逐一書かなくてはならないとか考えるだけで頭が痛いですw

パッと見で型がわからないって言っても今どきのIDEを使っているなら
マウスカーソル載せれば型出てきますし、問題になるようなことではないと思います。

じゃあfloatやintの時は普通に書いて長い型名の時だけ型推論使えばいいじゃないという意見もあります。
もちろんそれでもいいのですが、ケースバイケースで書き方が変わるのは後から見たとき見辛いと思います。

あとがき

今回は型推論の是非について私見を書きました。

使うべきとかデメリットよりメリットの方が多いとか
断言的な書き方をしましたがこれはあくまで私が知っている範囲での話です。

私が知らないメリットデメリットもあるかもですし、
何よりコードの書き方なんて個人の好みです。
型推論分かりづらいって人は使わず書いてもいいと思います。
(コーディング規約があればもちろんそれに従いましょう)

ただ型推論を使って損することはないので使うことを私は勧めます。

それでは今回はこの辺でノシ