Last Update at
DirectXプログラミング

DirectX8から始めるDirectXプログラミングを解説していきます

どうもDirectX8は機種依存性が高いのでDirectX9が出たら再開したいと思います。
◆目次
1. DirectXとは?
2. DirectX Graphics
3. DirectX Audio
4. DirectInput
5. DirectPlay

DirectX Graphics
項目 最終更新日
1. 何もしないDirectXアプリケーション 2001/04/22
2. 字を表示する 2001/06/26
3. ポリゴンを表示する 2001/05/01
4. ポリゴンにテクスチャを貼る 2001/05/01
5. ポリゴンを回転させる 2001/05/22
6. ポリゴンの移動(行列の使用) 2001/05/24
7. 常に一定の速さにする
8. よりゲームらしくしよう
DirectX Graphics(2D)
項目 最終更新日
1. スプライトを表示する 2001/09/07
2. エフェクト機能を使って表示する 2001/09/08
3. CopyRects命令を使って表示する 2002/??/??

DirectInput
1. DirectInputの初期化
2. マウスの反応を得る
3. ジョイスティックの反応を得る


◆用語説明
・プリミティブ

点、線分、面などのこと。

・物体、オブジェクト

車、飛行機とか、プリミティブがいくつも集まって物体ができてるもの。

・座標系

オブジェクト座標系(ローカル座標系),
ワールド座標系(グローバル座標系),
カメラ座標系(ビューイング座標系)などがありますが
違いは「どの位置を中心に、どの向きを0として、どのぐらいを1として」
ということです。

・ワイヤーフレーム
ポリゴンのように塗りつぶした面じゃなく線のみで物体を表現する手法を言います
・ポリゴン
・レイトレーシング
・Zソート法

面の重心をとり、視点からその点までの距離をZ値としこの値を用いて
ソートしておきます。描画時は、Z値の大きいもの(視点から遠くのもの)から
描画していくことで表現します。
しかし、面の重心1点を元にソートさせているため干渉状況によっては、
前後関係が正しく描画されない場合もあります。

・Zバッファ法

Zバッファと呼ばれる、Z値と色情報を保存するバッファを用います。
視野座標系上でのオブジェクトのZ座標を元に、ピクセル単位で
任意の位置(画面上に点を打つ位置)に保存されている値と比較し、より値が
小さければ(視点に近く、より手前のオブジェクトととなる)値を更新・記録
していき、この処理を面分に対しその面分のスクリーン座標で描画される領域
について繰り返すことにより、シーンを表現していきます。

最近ではマシンが非常に高性能なため、この手法が
最も一般的に用いられています。

・クリッピング

視点より後ろ(厳密には投影面)や視点より遥かに前方などに存在する
ものを描画する必要はあるでしょうか?
・・・用途にもよりますが、普通は見えない(見えるけど細密に表現しなくてよい)部分
など描画する必要はありません。
ここで、見える部分のみ表示させる(または画面外に表示させない)ようにするため
の処理をクリッピング処理と呼びます。
前者は前面クリッピング・後者は後面クリッピングと呼ばれ、一般的にゲームなどでは、
画面枠とのクリッピングと合わせて用います。

クリッピング処理は、プリミティブ数に比例して処理時間が増加します。
そこで、画面枠からはみださない・投影面より常に奥に存在するなどの
条件下なら、これらを外すことで高速化が図れます。

・フラットシェーディング

文字通り平らなポリゴンのことです。 グローやフォンでも座標的には 平面なのですが、通常はこのように分類されます。

・グローシェーディング

グロー氏により考案されたシェーディングアルゴリズム。
リアルタイムレンダリングに適しています。

・フォンシェーディング

フォン氏ににより考案されたシェーディングアルゴリズム。
高品質なレンダリングに適しています。

・平行光源
・点光源
・スポットライト
・アンビエント(環境光)
・シャドウィング(影)
・マテリアル(材質・質感
・ディフューズ(発散光・乱反射光)
・スペキュラ(ハイライト・鏡面反射光・異方性反射光)
・エミッシブ(発光)
・トランスパレンシ(透明度)
・屈折率
・テクスチャマッピング
・バイリニアフィルタリング
・ミップマップ
・パースペクティブコレクト
・バンプマッピング
・環境マッピング
・アルファブレンディング(α合成)
・モーションブラー
・アンチエイリアシング
・フォグ(霧)
・NURB曲面
・オブジェクトモーフィング
・インバースキネマティクス
・フレーム
・平行投影
・透視投影
・視野角
・行列
・陰面処理

オブジェクトの見えない部分のポリゴンを表示しないようにする処理を
陰面処理といいます。 陰面処理を施すことでポリゴンの
無駄な表示を減らし、高速化する事ができます。
ポリゴンを形成するすべてのベクトルをあらかじめ左回り、
もしくは右回りで定義します。 こうすれば外積が正か負かを調べるだけで
ポリゴン面の向きを調べることができます。
つまり外積が正の時ポリゴンが表向きなら、
外積が負のポリゴンは裏向きになるわけです。

・法線ベクトル

陰面処理に用いられる方法の中でもっとも一般的で簡単なのが、
法線ベクトルを使ってポリゴンの向きを調べる方法です。
法線ベクトルとはポリゴン平面に垂直なベクトルのことで、
具体的にはポリゴンを形成するベクトルの 外積 から求めることができます。
外積は始点から2つのベクトルさえわかれば求めることができ、
ポリゴンの頂点数が増えても計算量が増加しないのが特徴です。

・光源ベクトル

光源の向きを表すベクトルです。ベクトルの大きさで強さを表すなど、
              工夫次第で高度な表現が可能です。

・外積

外積は平面を形成する連続した2つのベクトルから求められます。
具体的には、ベクトル A=(ax, ay, az), B=(bx, by, bz)の場合、
(ay×bz-az×by, az×bx-ax×bz, ax×by-ay×bx)となります。


◆3Dシステム
・Direct3D
・OpenGL
戻る

Hit!Graph