MGL - チュートリアル


初めてのMGL

・プロジェクトを「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」からの続きです。
初めての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した状態でビルドすると、ワークスペースの「外部依存関係」
の所にそのヘッダファイルが出てきます。これを適当に、別のフォルダでも作ってあげて
そこに入れてあげるとインテリセンスが機能するようになります。(暫定対処…?)

 
 
 
 
戻る