メルマガ:あゆしゃのC言語プログラミング
タイトル:あゆしゃのC言語プログラミング(Vol.620) DX6 メッシュの作成  2005/12/07


/*========================================================*/
    <<<あゆしゃのC言語プログラミング>>>
/*========================================================*/
 第620回 DX6 メッシュの作成
 発行    2005年12月7日(水曜日)
 発行数   約2500

{magclick}
/*========================================================*/
 はじめに ( 決り文句 )
/*========================================================*/
・このメールマガジンは、主にまぐまぐさんから発行しています。
・ジャンルは、マルチメディアのプログラム、C言語です。
・横60文字で作成し、インデントは大抵半角スペース4つです。
・ここで扱うプログラムは、C言語と半光年以内のものです。
・登録解除は、メルマガのホームページでお願いします。
・過去ログはバックナンバー(下欄参照)を活用して下さい。
・内容は私が感じたもので、最新の技術も、へたれもあります。
・わかりやすさを優先させる為、たまに嘘があるかもしれません。

/*========================================================*/
 ご挨拶
/*========================================================*/

 こんにちは。あゆしゃです。

 12月6日火曜日、とんでもない事件が発生しました。

 あゆしゃが、いつもどおり豊田市〜知立市の電車に乗って、
オブジェクト指向プログラミングの本を眺めていたところ、

・電車が信号待ちで停車しました。

 まぁ、信号待ちはたまにあることなのですが、

・5分経っても停車したままでした。

 どうも、

★信号機が故障して動かなくなったようです。

 信号機が動かないと、それに連動する踏み切りが動かないため、
電車は動かすことができません。

 30分待った挙句、

★降ろされてしまいました。

 目的地の駅が近かったため、代行バスではなく

★運転手「知立までは、徒歩となります」

 いやはや、貴重な体験をさせていただきました。

{magclick}
/*========================================================*/
 今回のお題  << DX6 メッシュの作成 >>
/*========================================================*/

 サンプルソースです。

http://ayusya.hp.infoseek.co.jp/Source/DX9Sample_051205.cpp

 その実行結果です。

http://ayusya.hp.infoseek.co.jp/Image/DirectXSample_051205.png

/*========================================================*/

 今回はこの中の、メッシュの作成について説明します。

 メッシュとは網の目のことで、3D用語ではポリゴンの集まりに
なります。

 これがなくては、ポリゴンは表示できません。

/*========================================================*/

 do { ... } while( ! pD3D ); という記述は、

・なんちゃってtry〜catch構文

 です。

 エラーがあったら、breakで中断します。

/*========================================================*/

// メッシュを作成
if( FAILED( D3DXCreateMeshFVF( 1, 3, // ポリゴン数、頂点数
D3DXMESH_MANAGED, D3DVERTEX::FVF, pDev, &pMesh ) ) ) break;

 D3DXCreateMeshFVF という関数が、メッシュを作成する関数
です。

 失敗したら、FAILEDになりますので、breakします。

 コメントにもあるように、

第1引き数 ポリゴン数

第2引き数 頂点数

 となります。

 今回はポリゴンを1枚だけ表示しますので、1と3になる
わけですね。

 アリアハン大陸はだいたい32*32マスぐらいです。

 (少し横長なので、上下は海になります)

 32*32マスのマップを表示するならば、

 頂点数=1024

 ポリゴン数=2048

 という計画になります。楽しいですね。

/*========================================================*/

 D3DXMESH_MANAGED は、メモリ管理に関する指定です。

 頂点管理用のメモリと、インデックス管理用のメモリの管理を
デバイスにお任せします、という意味になります。

/*========================================================*/

 D3DVERTEX::FVF は、データ内容を指定する定数です。

// 頂点と法線の情報を持つ
enum { FVF = D3DFVF_XYZ | D3DFVF_NORMAL };

 このように、2つの定数のマクロを組み合わせて定義して
あります。

 コメントにあるとおり、この指定は頂点と法線の情報を持つ
ということになります。

 具体的には、

float x, y, z;      // 頂点座標
float nx, ny, nz;   // 法線ベクトル

 という6つのfloatメンバ変数を持つ、という意味です。

 インターフェースを指定しているようなものですね。

 法線ベクトルは頂点が向いている方向をあらわします。

/*========================================================*/

 pDev はおなじみの、デバイスです。

 作成されたポインタが、pMeshに格納されます。

{magclick}
/*========================================================*/
 さいごに
/*========================================================*/

 歩きましたとも、寒い中。

{magclick}
/*========================================================*/
 次回予告
/*========================================================*/

 次回は12月9日(金曜日)に、第621回をお送りします。
 お題は「DX7 カメラの設定」

 1つずつ、中身を見ていきましょう。

 お楽しみに!

/*========================================================*/
 最後の決り文句
/*========================================================*/
 このメールマガジンは、まぐまぐさんから発行しています。
 このメールマガジンを解除したい場合は、まぐまぐさんをご利用
ください。このメルマガのまぐまぐアイディーは最後にあります。
 このメールマガジンには広告が挿入されていますか?
 このメールマガジンの内容に文面の引用はありませんか?
 めーらっくすの場合はめーらっくすの利用方に従ってください。
 このメールマガジンの内容の、転用、流用、宣伝、リンク、
確かにあれはバイオハザードだ なんて大歓迎です。

{magclick}
/*========================================================*/
 
/*========================================================*/

発行者 あゆしゃ

ホームページ::あゆしゃの世界
http://ayusya.hp.infoseek.co.jp/

ご意見・ご感想・ご質問メール
mailto:ayusya@flamenco.plala.or.jp

まぐまぐ::アイディー
0000020674

まぐまぐ::登録と解除
http://www.mag2.com/m/0000020674.htm

まぐまぐ::バックナンバー
http://jazz.tegami.com/backnumber/frame.cgi?id=0000020674

めーらっくす::アイディー
MM3E1AEE285AB4F

めーらっくす::登録と解除
http://www.mailux.com/mm_dsp.php?mm_id=MM3E1AEE285AB4F

めーらっくす::バックナンバー★最近のものならこちらが便利★
http://www.mailux.com/mm_bno_list.php?mm_id=MM3E1AEE285AB4F

ブラウザの閉じるボタンで閉じてください。