掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
同一Imageを多数使用する際、メモリを最小限に抑えるには (ID:28150)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Delphiで、10年くらい前からゲームを作っていた経験から書きます。 ゲームでシューティングということですので、 本来ならば、ライブラリとして、DirectXか、DelphiなのでQuadrapleD3あたりを選ぶのがよいと思います。 しかし、本格的でなくてもいい、遅くてもいい、 とりあえず作ってみたい、という用途ならば、TImageでも簡単なものは作ることができます。 TImageベースで作ってみて、物足りなくなったら、 DirectXやQuadrapleDに移るのがよいでしょう。 TImageベースで動かすポイントとしましては、 TImageを2枚用意し、1枚は見えなくしてバックバッファとして使い、 もう一枚は、表示して、画面表示用に使います。 (バックバッファは、TImageでなくTBitmapでもいいかもですが) TImageや、TBitmapで読みこんでおいた自機や敵機のグラフィックを、使いまわして、表示します。 表示するときは、TBitmap.Canvas.Drawを使い、順次、見えないバックバッファに描画していきます。 全部、描画し終わったら、バックバッファから、表示用のTImageに一気に描 画します。 こうすると、ちらつきがでにくいです。 (厳密には、ティアリング等は発生しますが、それ以上は、DirectXをという話) ゲームで必須の、背景を透過した抜き色(スプライト風の描画)は、 昔は、抜き色用のマスクを持って、TBitmap.Canvas.Drawを読んでいたのですが、 今だと、TBitmap.Transparentを有効にして、Canvas.Drawで行けるはずです。 表示やゲームの実行は、TTimerで行うと簡単です。 (OnIdleでtimeGetTimeで時間はかって、余った時間をSleepするのがベターですが) ……などと、 いろいろ書いてみたのですが、TSさんの、書かれた 行き当たりばったりDelったり(仮) http://www.interq.or.jp/moonstone/person/index.html にほとんど要点が書いてありますね orz 書いてから気づきました。 ちなみに、TBitmapや、TCanvasの詳しいことは、 中村さんのサイトが参考になります。 2 VCL のグラフィックス http://www.asahi-net.or.jp/~HA3T-NKMR/vcl2.htm しかし、中村さんのサイトを見るくらい、わかってきているなら、そのまま、DirectXへどうぞという感じです。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.