|
/*========================================================*/ <<<あゆしゃのC言語プログラミング>>> /*========================================================*/ 第616回 DX2 デバイスの作成 発行 2005年11月28日(月曜日) 発行数 約2500 {magclick} /*========================================================*/ はじめに ( 決り文句 ) /*========================================================*/ ・このメールマガジンは、主にまぐまぐさんから発行しています。 ・ジャンルは、マルチメディアのプログラム、C言語です。 ・横60文字で作成し、インデントは大抵半角スペース4つです。 ・ここで扱うプログラムは、C言語と半光年以内のものです。 ・登録解除は、メルマガのホームページでお願いします。 ・過去ログはバックナンバー(下欄参照)を活用して下さい。 ・内容は私が感じたもので、最新の技術も、へたれもあります。 ・わかりやすさを優先させる為、たまに嘘があるかもしれません。 /*========================================================*/ ご挨拶 /*========================================================*/ こんにちは。あゆしゃです。 少し時間が空いてしまいました。 別に、巨像をやっていたわけでは、 ありますが、 それ以上に夢中だったものがあったのです 実は、巨像を購入した日に、もう1つゲームを買っていました。 それは、 ★マリー+エリーのアトリエ です! 懐かしいなぁと思いつつ、ついつい依頼をこなす日々を送って いました。 メルマガに戻ってきたのは、依頼が破綻したためですが、 それはともかく。 {magclick} /*========================================================*/ 今回のお題 << DX2 デバイスの作成 >> /*========================================================*/ さて前回、DXの最小のサンプルを紹介しました。 今回は1歩進んで、デバイスの作成です。 前回作成したのは、DXのオブジェクトであり、本体です。 本体なので、それ自体は絶対に必要ですが、しかし、 それ自体では、何もできません。 ポリゴンを1つ表示することもできないのです。 ポリゴンを表示したりするには、すべて、デバイスを通して 行います。 /*========================================================*/ // Direct3Dオブジェクトの取得 LPDIRECT3D9 pD3D = Direct3DCreate9( D3D_SDK_VERSION ); デバイスの作成には、前回作成したDXオブジェクトのポインタを 使用します。 // デバイスの作成 LPDIRECT3DDEVICE9 pDev = NULL; pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &dParam, &pDev ); CreateDeviceが、デバイスを作成します。そのままですね。 最後の引き数で、作成したデバイスを受け取ります。 残りの引き数は5つ。 /*========================================================*/ D3DADAPTER_DEFAULT とりあえずデフォルトを指定します。これ以外は指定しません。 /*========================================================*/ D3DDEVTYPE_HAL デバイスタイプに、HALを指定します。 ハルとは、ゲームの学校でも宇宙船のコンピュータでもなく、 「ハードウェア・アクセス・レイヤー」のことで、ハードとの 面倒なアクセスを受け持ってくれるいい人です。 /*========================================================*/ hWnd DXを表示するウィンドウハンドルを指定します。 どんなウィンドウであっても、ハンドルウィンドウを持っている 画面であれば、好きな場所に好きな大きさでDXの画像を表示する ことができます。 /*========================================================*/ D3DCREATE_HARDWARE_VERTEXPROCESSING クリエイト・ハードウェア・バーテックス(頂点)・ プロセッシング(処理)、ということです。 バーテックス(頂点)は、ポリゴンの頂点を意味しています。 その演算処理をハードウェアで行うデバイスを作成する、 という意味です。 /*========================================================*/ &dParam そのほかの設定を構造体で渡します。 そのほかの設定は、このように用意します。 // 宣言 ローカル変数でOK D3DPRESENT_PARAMETERS dParam; ZeroMemory( &dParam, sizeof( dParam ) ); // ウィンドウモードを指定する // フルスクリーンよりもウィンドウの方が簡単 dParam.Windowed = TRUE; // 垂直同期を狙って再描画する dParam.SwapEffect = D3DSWAPEFFECT_DISCARD; // 裏画面数1 dParam.BackBufferCount = 1; // ディスプレイモードのフォーマットを指定する D3DDISPLAYMODE dmode; pD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &dmode ); dParam.BackBufferFormat = dmode.Format; // デプスバッファ(いわゆるZバッファ)を使用する dParam.EnableAutoDepthStencil = TRUE; // デプスバッファの種類。16らしい。 dParam.AutoDepthStencilFormat= D3DFMT_D16; {magclick} /*========================================================*/ さいごに /*========================================================*/ 昔のアトリエはイベントが少ないんだなぁと、感心しました。 {magclick} /*========================================================*/ 次回予告 /*========================================================*/ 次回は11月30日(水曜日)に、第617回をお送りします。 お題は「DX3 デバイスの作成2」 実は、デバイスは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 |