・プロジェクトを「Win32 Application(※VC++6.0の場合。.netでも同じ名前だかは不明)」
にて作成します。プリコンパイル済みヘッダ等イチイチ作るのはめんどいので
「単純な Win32 アプリケーション」で作成する事にしましょう。
・mgl_header ディレクトリをコピーしてきます。
・Includeパスを切らないといけないので切ってください。(やり方は自分で調べて!)
・stdafx.h 内「// TODO: プログラムで必要なヘッダー参照を追加してください。」
の前辺りに「#include "mglafx.h"」と「#include "mglheads.h"」を記述します。
・mgllib.lib を、今作成したプロジェクトのディレクトリにコピーします。
・このlibファイルをリンクするように設定します。
(親切な解説!@VC++6.0編:
メニューの「プロジェクト」→「設定」→「リンク」の
「オブジェクト/ライブラリ モジュール」に「mgllib.lib」を追加する。
DebugビルドとReleaseビルドの両方にて設定しておくのを忘れずに!)
・実行モジュールの作成されるディレクトリ(デフォルトであれば「Debug」の筈)
に「mgllib.dll」をコピーしておきます。(Releaseビルドの際には、勿論「Release」
ディレクトリ内にもコピーしておく必要性アリ。)
一応これで、ひとまずセッティングは完了です。
後は好きにゴリゴリ作っていってクダサイ。
とりあえず動かしてみたいと言う人は
「初めてのMGL@とりあえず動かす編」を読み進めてみると良いでしょう。
「初めてのMGL」からの続きです。
「初めてのMGL」を読んでない人はちゃんとそっちから読んでないと駄目ですよっ!
□ □ □
メインのcppが出来ている筈なので、その WinMain() 関数の中に以下を記述します。
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { CMglEzGameFrame frame; frame.StartWindow( 640, 480, (LPTHREAD_START_ROUTINE)MainThread, "MGL Sample Program" ); return 0; }
「MainThread」はこれから作ろうとしているコールバック関数です。
CMglEzGameFrame::StartWindow() はウィンドウを作成した後、
別スレッドとしてこのコールバック関数を呼び出します。
(厳密にはその前に前処理等が含まれたりしますが…)
(※ちなみにインテリセンス(※パラメータヒント等の事)がちゃんと機能してくれないと思いますので
「インテリセンスが機能しない...?」の方を参考にしてみてください。)
// プロトタイプ宣言 BOOL MainThread( CMglEzGameFrame *pFrame ); // 関数本体 BOOL MainThread( CMglEzGameFrame *pFrame ) { for(int i=0; i<=255; i+=2) { pFrame->grp.Clear(D3DCOLOR_MONO(i)); // ウェイト処理と終了チェック if ( pFrame->DoFpsWait() != TRUE ) return TRUE; } pFrame->MsgBox( "終わり。", "おわりだよー" ); return TRUE; }
コールバックの引数として、先の CMglEzGameFrame のインスタンス(frame)
のポインタが渡って来るのでこれを使用して色々処理をします。
具体的にどうなるかは…実行すれば一目瞭然かと思います。(笑
DoFpsWait() は指定されたFPS(デフォルト60)に合わせて
ウェイトするメソッドです。兼、他にも色々な処理(画面への反映とか)
を行うのでフレーム処理毎に呼ばないと駄目です。
また復帰値として、ウインドウがちゃんと生存しているか否かが返って来るので、
FALSE が帰ってきた場合は処理を抜けるように記述します。
(これをやらないと×ボタン押された時等にちゃんと終了しない…)
大体感覚は掴めて頂けましたかね…?
次回はもうちょっと切り込んだ話をしたいと思います。
どうも(少なくともVisual C++ 6.0では)ヘッダファイルがプロジェクトに
追加されていないとインテリセンスが機能しないようです。
(何で標準の関数とかは追加されてなくても出てくるんですかね…?良く分かりません。。。)
該当のヘッダファイルをincludeした状態でビルドすると、ワークスペースの「外部依存関係」
の所にそのヘッダファイルが出てきます。これを適当に、別のフォルダでも作ってあげて
そこに入れてあげるとインテリセンスが機能するようになります。(暫定対処…?)
>戻る