|
/*========================================================*/ <<<あゆしゃの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 |