こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Windows API ペンを作るタイミング

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

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

投稿日時 - 2011-10-12 03:43:36

QNo.7066342

困ってます

質問者が選んだベストアンサー

こんにちは。なかなかコメントがつかないようなので・・・。

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

投稿日時 - 2011-10-18 09:51:27

お礼

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

投稿日時 - 2011-10-23 18:49:07

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問