Windows プログラミングでビットマップに抜き色を指定するとき、 BitBlt() 関数のラスタオペレーションを使うのですが、これがよくわからない人向けの覚え方です。
まず、ビットマップに抜き色を指定するために、描画先をマスク画像で OR 演算して、その後に本来の画像で AND 演算するという手順を踏むのですが、最初はどうしてもイメージしづらいと思います(私もそうでした)。
ラスタオペレーションを使った抜き色を考えるときは、次のことを頭に入れておくとスムーズに理解できます。
ちゃんと理屈はあるんですよ。でも、こうやって覚えておいた方が簡単だと思います。この知識を前提にもう一度ラスタオペレーションの解説を読んでみてください。そのうちメルマガでも取り上げます。
Comments
OMEGAと申します。
高校生でゲームプログラミング(シューティングゲーム)をしています。
シューティングゲーム製作に、透過は欠かせませんよね。
そこでなんですが、透過する際、TransparentBltとBitBltだったらどっちを使うべきなんでしょうか?
今、自分は「描画速度の向上」という大きな問題(?)に直面しています。
BitBltの方が早いならば、BitBltを使いたいと思うんですが…
> OMEGA さん
こんにちは。
また、いらしていただいてありがとうございます(^^
どちらの方が速いのかは実験してみないとわからないのですが、
TransparentBlt() は古い Windows では使えないので、
ゲームを広く配布なさる場合は BitBlt() を使った方が良いと思います。
でも、実際に古い Windows で新しい関数を使うと、
どういうエラーになるのかは見たことがありません。
Microsoft によると「 Windows にはフォールバックメカニズムがあるので
古い Windows で新しいプログラムも動く」とあるのですが、
これが何を意味するのか分かりません。
一度試してみたいです。
お返事ありがとうございます。
う~む、微妙ですね…
まぁ、あんまり配布はする気ないので、とりあえずTransparentBlt()で作ることにしました。
ありがとうございます。
> OMEGA さん
そーですね。
今の時代 XP や Vista が前提でも問題ないと思います。
スマートなやり方を採用するのが良いかと。
Contributions