いちばんやさしいゲームの作り方

文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ

Windows プログラミングでビットマップに抜き色を指定するとき、 BitBlt() 関数のラスタオペレーションを使うのですが、これがよくわからない人向けの覚え方です。

まず、ビットマップに抜き色を指定するために、描画先をマスク画像で OR 演算して、その後に本来の画像で AND 演算するという手順を踏むのですが、最初はどうしてもイメージしづらいと思います(私もそうでした)。

ラスタオペレーションを使った抜き色を考えるときは、次のことを頭に入れておくとスムーズに理解できます。

  • ふたつの色を OR 演算すると白に近い色が勝つ。つまり白は最強。
  • ふたつの色を AND 演算すると黒に近い色が勝つ。つまり黒は最強。

ちゃんと理屈はあるんですよ。でも、こうやって覚えておいた方が簡単だと思います。この知識を前提にもう一度ラスタオペレーションの解説を読んでみてください。そのうちメルマガでも取り上げます。

Comments

OMEGA
2008/06/05 18:24:27

OMEGAと申します。
高校生でゲームプログラミング(シューティングゲーム)をしています。
シューティングゲーム製作に、透過は欠かせませんよね。
そこでなんですが、透過する際、TransparentBltとBitBltだったらどっちを使うべきなんでしょうか?
今、自分は「描画速度の向上」という大きな問題(?)に直面しています。
BitBltの方が早いならば、BitBltを使いたいと思うんですが…

Byerkut
2008/06/05 20:50:07

> OMEGA さん

こんにちは。
また、いらしていただいてありがとうございます(^^

どちらの方が速いのかは実験してみないとわからないのですが、
TransparentBlt() は古い Windows では使えないので、
ゲームを広く配布なさる場合は BitBlt() を使った方が良いと思います。

でも、実際に古い Windows で新しい関数を使うと、
どういうエラーになるのかは見たことがありません。
Microsoft によると「 Windows にはフォールバックメカニズムがあるので
古い Windows で新しいプログラムも動く」とあるのですが、
これが何を意味するのか分かりません。

一度試してみたいです。

OMEGA
2008/06/05 21:50:08

お返事ありがとうございます。
う~む、微妙ですね…
まぁ、あんまり配布はする気ないので、とりあえずTransparentBlt()で作ることにしました。
ありがとうございます。

Byerkut
2008/06/05 22:01:46

> OMEGA さん

そーですね。
今の時代 XP や Vista が前提でも問題ないと思います。
スマートなやり方を採用するのが良いかと。

Contributions




Trackback URL

メルマガ登録・解除
 
挫折不可能!初級ゲームプログラミング完全マニュアル
RSS track feedいちばんやさしいゲームの作り方 カウンター
ブログSEO対策:track word あわせて読みたい SEO STATUS