メルマガ:あゆしゃのC言語プログラミング
タイトル:あゆしゃのC言語プログラミング(Vol.624) DX10 マテリアルの設定  2005/12/16


/*========================================================*/
    <<<あゆしゃのC言語プログラミング>>>
/*========================================================*/
 第624回 DX10 マテリアルの設定
 発行    2005年12月16日(金曜日)
 発行数   約2500

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

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

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


{magclick}
/*========================================================*/
 今回のお題  << DX10 マテリアルの設定 >>
/*========================================================*/

 サンプルソースです。

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

 その実行結果です。

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

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

 今回は光源の次の、マテリアルの設定です。

// マテリアルを設定
ZeroMemory( &Material, sizeof( D3DMATERIAL9 ) );
DLM_SET_RGB( Material.Diffuse, 0.5f, 1.0f, 0.0f ); // 草原色
DLM_SET_RGB( Material.Ambient, 0.5f, 1.0f, 0.0f );

 こんな感じですね。

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

 マテリアルの設定については、描画の段階で行うので、この段階
デバイスに登録することはありません。

 単純に、マテリアルの情報を用意するだけです。

 マテリアルとはポリゴンの材質です。

 つまり、草原のような材質を持たせたポリゴンは、草原の様に
描画されます。

 仮に金属のように設定すれば、金属のように描画されます。

 具体的には、

・ディフューズカラー
・アンビエントカラー

 の2つを設定します。

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

 ディフューズカラーは、光源の光に対してポリゴンが反射する
色の種類を指定します。

 赤を反射するポリゴンは赤く、青を反射するポリゴンは青く
見えます。

 これにより、ポリゴンの色を指定します。

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

 アンビエントカラーは、光源とは別にデバイスに直接指定した
アンビエント光に対して、ポリゴンが反射する色の種類を指定し
ます。

 青くすれば青く、赤くすれば赤くなります。

 指定する値は1.0fが100%という意味ではありません。

 1.0を超える値を指定することもできます。

 特にアンビエント光自体が弱い光なので、ディフューズを使用
しない場合、高い値を指定しないと予想以上に暗い色になります。

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

 マテリアルの構造体にはもう1つ、エミッシブカラーの設定が
ありますが、これはポリゴン自体の純粋な色を設定します。

 ディフューズカラーとアンビエントカラーを指定せずに、
このエミッシブカラーのみを指定すると、光源に左右されない、
淡色のポリゴンを描画します。

 光源に左右されない物体、たとえば太陽などの光源そのものに
使用します。

// 太陽の色は純白
DLM_SET_RGB( Material.Emissive, 1.0f, 1.0f, 1.0f );

 こんな感じですね。

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

 マテリアルの構造体にはもう2つ、スペキュラーカラーとその
強さを設定する項目がありますが、

 これは「グローシェーディング」という、丸っこいポリゴンを
描画するときに使うもので、ハイライトを設定します。

 金属など、ハイライトが描画されるものに使用しますが、

 今回はまったく使いません。

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

 今後の予定です。

12月16日金曜日 第624回 DX10 マテリアルの設定 済
12月19日月曜日 第625回 DX11 メッシュの設定
12月21日水曜日 第626回 DX12 描画処理
12月23日金曜日 第627回 2005年総集編
 1月 9日月曜日 第628回 2006年
 1月11日水曜日 第629回 DX13 マップを描画

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

 次回は12月19日(月曜日)に、第625回をお送りします。
 お題は「DX11 メッシュの設定」

 一番大変な項目に入ります。

 お楽しみに!

/*========================================================*/
 最後の決り文句
/*========================================================*/
 このメールマガジンは、まぐまぐさんから発行しています。
 このメールマガジンを解除したい場合は、まぐまぐさんをご利用
ください。このメルマガのまぐまぐアイディーは最後にあります。
 このメールマガジンには広告が挿入されていますか?
 このメールマガジンの内容に文面の引用はありませんか?
 めーらっくすの場合はめーらっくすの利用方に従ってください。
 このメールマガジンの内容の、転用、流用、宣伝、リンク、
外気センサーが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

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