アプリ版:「スタンプのみでお礼する」機能のリリースについて

ゲームのプログラミングをしています。
テキストのサンプルプログラムではペンやブラシをWM_CREATEの中で
hPen[1] = CreatePen(PS_SOLID, 2, RGB(50,70,0));
   :
   :
のような感じで生成して
WM_PAINT内でSelectObject(hdc, hPen[i]);
として使っているのですが
自分のプログラムはPaintという関数を使っています。
その場合Paint(~)にそれらの配列を渡す形で良いのでしょうか? 一応今はそれで動いてます。

ただ描画の処理は1つの関数にまとめると書いてあったので
Paint内で生成&削除をした方がよいのかとも思いまして・・・
どっちが一般的なのか、どういう場合はどうすればいいのかっていうのが
経験がなくて全然わからないので教えて欲しいです。
一応落ち物ゲームやシューティングゲームを想定してます。

A 回答 (1件)

こんにちは。

なかなかコメントがつかないようなので・・・。

ご質問の件ですが、いまのWindowsでは基本的にどちらでも構いません。
Windows3.x時代は、ペンなどのGDIリソースが貴重なものだということでできるだけWM_PAINT内で生成して関数から出る前に削除することが推奨されていた時代もあったようですが、いまは異なるペンを数千~数万個の単位で作りっぱなしにするのでなければ、一旦作ったペンを削除せずに何度でも使ってもよいと思います。
特に、高速シューティング系のゲームなら毎回ペンを作る時間もそれなりに時間がかかるので(とはいっても最近の超高速マシンなら気にするほどでもないか・・・)、繰り返し使うペンは作りっぱなしで何度も使い回した方が(気持ちだけでも)高速化できるのではないでしょうか。
    • good
    • 0
この回答へのお礼

すみません遅くなりました。
回答ありがとうございます。
どちらでもよいですか。ならとりあえずは今のままでやってみます。
いろいろ経験していく中で臨機応変にやり方を変えていけるようになればと思います。
ありがとうございました。

お礼日時:2011/10/23 18:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!