DirectX9必携 増補版
タイトル DirectX9必携 増補版
概要 Direct3D9,DirectSound8,DirectMusic,DirectInput8,DirectSetupの使用方法を膨大なサンプルにより解説。
価格 6500円+税 オンラインショップへ
本書籍付属データ(ソースコードその他)のダウンロードはこちらです
電子書籍です。
PDFファイルでのご提供となります(紙の書籍ではありません)。電子書籍の決済後の流れ等はこちらをご覧ください。
概要
本書は2010年にリリースしたDirectX9必携の増補版という位置付けの書籍になります。多くの部分はDirectX9必携そのままで、Direct3Dについて75項目程度を追加した形の電子書籍になります。
Direct3D以外のAPI、DirectSound,DirectInput,DirectSetupについてはDirectX9必携と全く同じであり変更点追加点はありません。
仕事上、筆者はよく本書を利用するのですが、「こんなことも載ってなかったのか」と思うことが何回かありました。具体的にはDirect3Dの頂点バッファを利用してのポリゴンやメッシュの作成がその1つです。OpenGLの仕事をしているときに、頂点バッファを作成してモデルを作成することが多いのすが、そんな時本書を参考にしようと思って開いても基本的な頂点バッファ方式のやり方が載っていません。これはまずいと思ったのがきっかけです。
サンプルプログラム数で57サンプル、項目数で75項目増やした本にしました。
追加したサンプルは(全てDirect3Dです)、
頂点バッファでポリゴン関連
頂点バッファでメッシュ関連
フェードインアウト
キューブシャドウマップ
ブルーム(グロー)
ラジアルブラー
ゴッドレイ
ピクセルモーションブラー
フォグ
グラウンドフォグ、テクスチャードグラウンドフォグ
丸影
ライト各種(ディレクショナル、ポイント、スポット、減衰、ソフトエッジ)
オーレン・ナーヤー シェーダー
クック・トランス シェーダー
頂点単位、ピクセル単位の理解
2色コートシェーダー
アイスシェーダー
アイスシェーダー
Effectを使わないでHLSL
などです。
もともと本書では様々なパターンのサンプルを膨大に用意しています。今回追加したサンプルにより穴がなくなり、より読者の役に立つ可能性が向上したのではと思います。きっと読者の目的に合致したサンプル・項目があるはずです。
本書概観
増えたサンプル(抜粋)
追加した主なサンプルの動画です。
スポットライト
キューブシャドウマップ
テクスチャードグランドフォグ
ピクセルモーションブラー
ラジアルブラー
ゴッドレイ
丸影
ブルーム(グロー)
Effectシステムを使わずにHLSL
アイスシェーダー
カーペイントシェーダー
オーレンナーヤー
クックトランス
頂点バッファでメッシュをゼロから構築
目次
1部 準備 22
1章 コンパイラー、SDK 23
003 古いバージョンのSDKをインストールする 24
004 異なるバージョンのSDKを使い分ける 35
005 VisualC++のバージョン問題解消 38
006 プロジェクトの保管管理方法 39
2部 DIRECT3D 40
2章 Direct3D 初期化 41
007 Direct3Dを初期化する 42
3章 プログラマブル・シェーダー超基本 46
008 最小機能で動くシェーダーを書く 47
009 ディフューズ色くらいは反映したい 50
010 陰影くらいは付けたい 52
011 テクスチャを貼りたい 55
012 シェーダーにデータを渡す 57
013 シェーダーからデータを取得する 59
4章 オブジェクトのレンダリング 60
4-1 点(ポイント) 60
014 ポイント(点)のレンダリング 61
4-2 パーティクル(ポイントスプライト) 63
015 ポイントスプライトとは? 64
016 ポイントスプライト 3D 65
017 ポイントスプライト 2D 67
018 ポイントスプライトのサイズを変更する 3D 70
019 ポイントスプライトのサイズを変更する 2D 72
020 ポイントスプライトをパーティクルらしくレンダリングする 76
4-3 線(ライン) 78
021 ライン(線)のレンダリング 79
4-4 単一面(ポリゴン) 80
022 ポリゴン(3頂点の面)のレンダリング 81
2Dスプライト 82
023 スプライト 2通りの実現方法 83
024 スプライトをレンダリングする 84
025 スプライトの抜け色を抜く 86
026 スプライトを意図した重ね順で重ねる 88
ビルボード 88
027 ビルボードをレンダリングする 89
頂点バッファから作る 92
028 頂点バッファでポリゴン 93
029 頂点バッファでポリゴン 頂点色 95
030 頂点バッファでポリゴン マテリアル色 97
031 頂点バッファでポリゴン 色、陰影 100
032 頂点バッファでポリゴン 色、陰影、光沢 101
033 頂点バッファでポリゴン テクスチャー 103
034 頂点バッファでポリゴン テクスチャー、陰影、光沢 105
4-5 複数面(メッシュ) 107
基本形状メッシュ 109
035 スフィア(球)のレンダリング 110
036 ボックス(立方体)のレンダリング 112
037 シリンダー(円柱)のレンダリング 113
038 トーラス(ドーナツ形)のレンダリング 116
039 ティーポットのレンダリング 119
040 3Dフォントのレンダリング 121
Xファイルメッシュ 122
041 Xファイルの作成について 123
042 Xファイルメッシュのレンダリング 126
043 複数のメッシュをレンダリングする 128
プログレッシブメッシュ 129
044 プログレッシブメッシュをレンダリングする 130
アニメーションメッシュ 132
045 アニメーションメッシュの作成について 133
046 アニメーションメッシュをXファイルから読み込む 135
047 フレーム階層を展開・走査する 136
048 階層展開(アロケート・ヒエラルキー)クラスのメソッドを実装する 137
049 アニメーションメッシュをレンダリングする 138
050 アニメーションスピードを調整する 140
051 時間指定によりモーションを切り替える 141
052 トラック切り替えによりモーションを切り替える 143
スキンアニメーションメッシュ 146
053 スキンメッシュとは? 147
054 スキンメッシュの作成について 148
055 スキンメッシュをレンダリングする 151
056 スキンアニメーションスピードを調整する 153
057 時間指定によりモーションを切り替える 154
058 トラック切り替えによりモーションを切り替える 156
頂点バッファから作る 157
059 頂点バッファでメッシュ 158
060 頂点バッファとインデックスバッファでメッシュ 162
061 頂点バッファとインデックスバッファでメッシュ 色 165
062 頂点バッファとインデックスバッファでメッシュ 色、陰影、光沢 168
063 頂点バッファとインデックスバッファでメッシュ テクスチャー 169
064 頂点バッファとインデックスバッファでメッシュ テクスチャー、陰影、光沢 170
4-6 文字列 170
065 情報確認用の文字列をレンダリングする 171
066 フォント名を取得する裏技 173
067 もじもじ君を使う 175
5章 オブジェクトの質感 178
5-1 マテリアル 178
068 色をつける 179
069 プラスチックのような質感にする 181
070 ゴムのような質感にする 182
071 金属のような質感にする 184
5-2 テクスチャ 185
072 オブジェクトにテクスチャを貼る 186
073 テクスチャのフォーマットとメモリサイズを理解する 188
074 ミップマップとメモリサイズを理解する 190
075 アルファ付きテクスチャで透過部分を作る 191
076 マルチパスとは 193
077 マルチテクスチャとは 194
078 テクスチャステージとは 195
079 オブジェクトに複数枚のテクスチャをブレンドして貼る 196
080 (特殊な)テクスチャ座標を自動生成する 197
081 鏡を作成する 201
082 テクスチャ自体を動かす 203
083 スプライトのテクスチャを反転させる 206
084 プログラマブルシェーダーでテクスチャを貼る 209
085 マルチテクスチャでメッシュを「燃やす」 211
086 プログラマブルシェーダーにおけるテクスチャの合成 215
087 プログラマブルシェーダーで「燃やす」 217
088 プログラマブルシェーダーで「焦がす」 220
5-3 シェーディングモデル 222
089 メッシュの頂点のみレンダリングする 223
090 メッシュをワイヤーフレームでレンダリングする 224
091 フラットシェーディングする 225
092 グーローシェーディングする 226
093 フォンシェーディングする 227
094 トゥーン(セル画風)シェーディングする 229
5-4 シェーディング 頂点単位とピクセル単位 232
095 頂点単位とピクセル単位 233
096 ランバート 頂点単位 236
097 ランバート ピクセル単位 237
098 フォン 頂点単位 238
099 フォン ピクセル単位 239
5-5 陰影と光沢 239
100 グーローシェーディングモードにより陰影を付ける 240
ランバート 241
101 ランバートモデルのシェーダーにより陰影を付ける 242
フォン 243
102 光沢を付ける 244
103 フォンモデルのシェーダーにより光沢を付ける 246
104 アイススティックのような霜(しも)を付ける 247
オーレン・ナーヤー 247
105 オーレン・ナーヤー 頂点単位 248
106 オーレン・ナーヤー ピクセル単位 251
クック・トランス 252
107 クック・トランス 頂点単位 253
108 クック・トランス ピクセル単位 256
5-6 シェーダー応用例 258
109 2色コーティング 259
110 アイスシェーダー 頂点単位 261
111 アイスシェーダー ピクセル単位 263
5-7 Effectシステムを使わずにHLSL 264
112 Effectを使わないでHLSL 265
5-8 バンプマッピング 268
113 ノーマルバンプマッピング(ハイトマップ) 269
114 ノーマルバンプマッピング(ノーマルマップ) 272
115 海水面を作る 273
5-9 映り込み 275
116 スフィアマップで擬似的に映りこませる 276
117 スフィアテクスチャを作成・初期化する 281
118 キューブマップでリアルに映りこませる 284
119 キューブテクスチャ用の画像を作成する 289
120 キューブテクスチャを作成・初期化する 295
121 サーフェイスで映りみを作る 296
122 奇妙な映りこみ 298
5-10 アルファブレンディング 299
123 アルファブレンディングする 300
124 カメラ位置に依存しないアルファブレンディング 302
125 1つのメッシュ内部でのアルファブレンディング 305
126 マテリアルのアルファ成分を反映させる 307
127 アルファ付きテクスチャの特定領域だけを透過させる 309
128 透過している裏ポリゴンを自然にする(カリングトリック) 311
6章 オブジェクトの位置、動作、変形 315
129 平行移動 316
130 回転 317
131 スケーリング 318
132 ビルボード化 319
133 任意画面位置に固定表示 321
134 ぺちゃんこ 322
7章 シーン 323
7-1 カメラワーク 323
カメラとは 323
135 カメラを移動・回転 324
136 特定の物体を注視させる 329
137 フォロートラックを行う(注視+追従移動) 332
138 回り込みトラックを行う(注視+移動+回転) 335
139 クレーンを行う(注視+移動) 339
140 ズームイン・アウトする 343
141 ドリーイン・アウトを行う(注視+移動+ズーム) 346
142 カメラを画面に対して絶対的に回転させる 349
143 カメラを画面に対して絶対的に回転させる2 (クオータニオン) 351
144 カメラに対し一定なジオメトリを作る(ビルボード) 353
145 3人称視点(TPV) 357
146 1人称視点(FPV)⇔3人称視点(TPV) 相互切り替え 359
147 ビュー変換行列を自分で作る 361
7-2 ライト 362
ディレクショナルライト 362
148 ディレクショナルライト 363
ポイントライト 366
149 ポイントライト 367
150 ポイントライト 減衰 371
スポットライト 373
151 スポットライト 374
152 スポットライト 減衰 379
153 スポットライト ソフトエッジ 380
154 スポットライト ソフトエッジ 減衰 383
7-3 フェードインアウト 384
155 フェードインアウトの仕組み 385
156 フェードインアウト ホワイトイン 386
157 フェードインアウト ホワイトアウト 391
158 フェードインアウト ブラックイン 394
159 フェードインアウト ブラックアウト 397
7-4 ぼかし 399
160 アンチエイリアシングをかける 400
161 フォグとは? 404
162 頂点フォグの問題点 405
163 開始点と終了点によりフォグをかける 409
164密度によりフォグをかける 411
165 頂点フォグ 413
166 ピクセルフォグ 415
167シェーダー線形フォグ 417
168 シェーダー指数フォグ 421
169 シェーダーグラウンドフォグ 423
170 シェーダーテクスチャードグラウンドフォグ 426
171 シーン全体をぼかす 429
172 簡易モーションブラー(高速) 432
173 距離によりぼかし具合を変化させる 434
174 被写界深度(DOF)効果を出す 436
175 ピクセルモーションブラー 437
176 ピクセルモーションブラー アニメで確認 441
7-5 影 442
177 平面投影法で影を作る 443
178 丸影 445
179 丸影 ソフトエッジ 450
180 シャドウボリューム法で影を付ける 453
181 ポイントライト時のシャドウボリューム 456
182 シャドウボリューム自体をレンダリングする 458
183 ダブル・ステンシルでシャドウボリュームを高速化する 460
184 シャドウマップ法で影を付ける 462
185 シャドウマップ法で影を付ける(ライティングを加味) 465
186 シャドーマップ法で影を付ける(ライティング、テクスチャを加味) 467
187 深度テクスチャを表示してみる 470
188 アニメーションメッシュに平面投影の影 472
189 アニメーションメッシュにシャドウボリューム 474
190 アニメーションメッシュにシャドウマップ 475
191 キューブシャドウマップ 477
192 キューブマップについて 482
193 キューブシャドウマップ 深度マップ可視化 483
7-6 ブルーム 484
194 ブルームとは 485
195 カーネルとは 487
196 ブルーム ガウシアンブラー 1パス 3×3カーネル 490
197 ブルーム ガウシアンブラー 1パス 5×5カーネル 497
198 ブルーム ガウシアンブラー 2パス 3×3カーネル 500
199 ブルーム ガウシアンブラー 2パス 5×5カーネル 503
200 ブルーム ガウシアンブラー 2パス 7×7カーネル 506
7-8 ゴッドレイ 508
201 ゴッドレイとは 509
202 ラジアルブラー 511
203 ゴッドレイ 515
204 ゴッドレイ 光源移動 523
205 ゴッドレイ 背後モデル考慮 528
7-9 最適化 530
206 視錐台カリング 531
8章 ダイナミクス 534
8-1 バウンディングスフィアによる衝突判定 534
207 バンディングスフィアにより衝突判定する 535
208 バンディングスフィアにより衝突判定する(アニメーションメッシュ) 538
8-2 バウンディングボックスよる衝突判定 540
軸平行境界ボックス AABB 540
209 AABBにより衝突判定する 541
有向境界ボックス OBB 543
210 OBBにより衝突判定する 544
211 OBBツリーにより衝突判定する(アニメーションメッシュ) 547
8-3 レイによる衝突判定 550
直線と面の交差検出 550
212 直線と無限遠平面の交差を検出する 551
213 平面方程式を求める 554
214 交点が平面の内か外かを検出する 556
215 直線と有限遠平面の交差を検出する 558
216 直線と平面の交点座標を算出する 560
直線とメッシュの交差検出 561
217 直線(レイ)とメッシュの交差を検出する 562
218 ”ワールド系での”直線(レイ)とメッシュの交差を検出する 564
219 交差しているメッシュ内のポリゴンを得る 566
220 交差しているメッシュ内ポリゴンの平面方程式を計算する 568
221 線(レイ)とメッシュ(内ポリゴン)の交点座標を求める 570
直線とアニメーションメッシュの交差検出 571
222 直線(レイ)とアニメーションメッシュの交差を検出する 572
223 交差しているアニメーションメッシュ内のパーツメッシュを得る 574
224 交差しているアニメーションメッシュ内のポリゴンを得る 575
225 交差しているアニメーションメッシュ内ポリゴンの平面方程式を計算する 576
226 線(レイ)とアニメーションメッシュ(内ポリゴン)の交点座標を求める 578
8-4 落下 578
227 自由落下のみ 579
228 自由落下、地面でバウンド 581
8-5 反射 582
229 反射 583
230 ポリゴン単位で反射 585
8-6 滑り 587
231 障害物を滑る 588
232 坂を登る 593
233 階段を登る 595
234 デコボコ地面を歩く 597
235 動く面上に対しての滑り 600
236 滑っている方向に回転する 604
8-7 発見システム 605
237 かくれんぼのAIにはオクルージョンクエリ 606
9章 レンダリング先、画面 609
9-1 ダイアログ 609
238 モーダルダイアログ全体にレンダリングする 610
239 モーダルダイアログの一部にレンダリングする 612
240 モードレスダイアログ全体にレンダリングする 613
241 モードレスダイアログの一部にレンダリングする 615
9-2 テクスチャサーフェイス 616
242 テクスチャ上にレンダリング 617
9-3 マルチビュー 620
243 1つのビューを分割した領域にレンダリングする 621
244 異なるビューを分割した領域にレンダリングする 624
245 一部の領域に異なるビューでレンダリングする(バックミラー等) 626
246 1つのビューを別のウィンドウ(子ウィンドウ)にレンダリングする 627
247 異なるビューを別のウィンドウ(子ウィンドウ)にレンダリングする 631
9-4 フルスクリーン 633
248 フルスクリーンにレンダリング 634
249 フルスクリーンにおけるデバイス消失を復旧する 636
10章 マウス 637
250 3D空間をマウスクリックする 638
11章 各種リソース、バッファ、サーフェイス 641
11-1 リソース管理 641
251 プールとは? 642
252 プールの種類とそれぞれの意味は? 643
253 ロックとは? 644
254 ロック時のフラグの意味は? 646
11-2 テクスチャ 646
255 ダーティ領域とは? 647
256 ダーティ領域を設定する 648
257 テクスチャをロックする 651
258 ビデオメモリにあるテクスチャをロックする 652
259 テクスチャ内のピクセルを変更する 653
260 テクスチャ内のピクセルを参照する 655
261 テクスチャからテクスチャへピクセルをコピーする 656
262 テクスチャを単色で塗りつぶす 657
263 テクスチャー内のイメージを動かす 659
11-3 画面バッファ関連(サーフェイス) 661
264 フロントバッファ、バックバッファとは? 662
265 深度バッファ(Zバッファ)とは? 663
266 ステンシルバッファとは? 664
267 デスクトップのサイズ、フォーマットを取得する 665
268 画面の状態を画像ファイルにする 666
11-4 レンダリングターゲット 668
269 レンダリングターゲットを変更する 669
270 テクスチャ上にレンダリングする 670
271 空(から)のオフスクリーンサーフェイスを作成する 674
272 フルスクリーン画面のピクセルデータを取得する 675
273 デスクトップ画面のピクセルデータを取得する 677
274 ウィンドウクライアント画面のピクセルデータを取得する 679
12章 Xファイル 680
12-1 Xファイルメッシュのバッファ 680
頂点バッファ 680
275 メッシュ内の頂点バッファにアクセスする 681
276 メッシュ内の頂点数を取得する 682
277 メッシュ内のポリゴン数を取得する 683
278 頂点バッファから頂点情報を取得する 684
279 メッシュの頂点に接線情報を加える 686
インデックスバッファ 687
280 インデックスバッファとは? 688
281 インデックスバッファにアクセスする 689
282 インデックスによりポリゴンの3頂点を取得する 690
283 ポリゴンの頂点法線を取得する 692
284 ポリゴンの頂点法線から面法線を算出する 694
属性バッファと属性テーブル 695
285 属性バッファとは? 696
286 属性テーブルとは? 700
287 属性バッファにアクセスする 701
288 属性テーブルを取得する 702
289 属性バッファの内容を表示する 703
290 属性テーブルの内容を表示する 705
291 属性の活用例(DrawSubsetに依らないサブセットごとのレンダリング) 707
隣接性バッファ 709
292 隣接性バッファとは? 710
293 隣接性バッファの作成 711
294 隣接性バッファの表示 712
295 隣接性バッファの活用例 714
12-2 Xファイル自体 716
296 Xファイルとは? 717
297 Xファイルの構造を理解する 718
298 Xファイル自体はどうやって作るの? 725
299 Xファイルのサイズを小さくする 726
300 メッシュの頂点数を削減してXファイルを小さくする 728
301 同じメッシュでも3DCGソフトとXファイルで頂点数が違うのはなぜ? 731
302 Xファイルに複数のアニメーション情報を収録する 732
13章 その他 733
303 ビデオカード及びドライバ関係の能力を取得する 734
304 自分の環境でのシェーダーの情報を取得する 737
305 デバッグ時の”ウォッチ”でインターフェイスのメンバを表示するには? 739
3部 DIRECTSOUND 742
14章 WAVファイル 743
14-1 WAVファイル 743
306 WAVファイルとは? 744
307 WAVファイルの構造 745
308 WAVファイルの種類 746
309 RIFFとは? 747
310 PCMとは? 749
311 リニアPCMとは? 750
312 標本化の原理 751
313 量子化の原理 753
314 符号化の原理 754
315 サウンドフォーマット構造体を把握する 755
14-2 WAVデータ読み込み 756
316 WAVファイルを開く 757
317 WAVファイル内を走査してチャンクを見つける 758
318 WAVファイルかどうか判別する 759
319 リニアPCMかどうかを判別する 760
320 FOURCCとは? 761
321 セカンダリーバッファーを作成する 762
322 セカンダリバッファーにWAVフォーマットを格納する 763
323 セカンダリーバッファーに波形データを書き込む 764
324 WAVファイル読み込みコード 765
325 RIFFにおけるチャンク及びID等のサイズ 767
15章 再生 768
15-1 基本再生 768
326 セカンダリーバッファーを再生(停止)する 769
327 再生中に関らず最初から再生をする 770
328 静的バッファによる基本的な再生を行う 772
329 サウンドをパンさせる 773
330 周波数を変更する(スピード・トーンを変更する) 775
331 ボリュームを変更する 777
332 サウンドカードの専用メモリってあるの? 779
333 バックグラウンドでも鳴るようにする 780
15-2 ストリーミング再生 781
334 ストリーミング再生とは? 782
335 なぜストリーミングするの? 783
336 ストリーミングの仕組み 784
337 WAVデータ上の”読み込みカーソル”が必要! 791
338 メモリ一括方式とファイル逐次方式 792
339 ストリーミング再生を行う(メモリ一括保存バージョン) 793
340 完全なストリーミング再生を行う(ファイル逐次読み込みバージョン) 796
15-3 エフェクト再生 797
エフェクト全般 797
341 エフェクトとは? 798
342 エフェクトを分類してみる 799
343 ディレイ系とは? 801
344 歪み(ひずみ)系とは? 802
345 うねり系とは? 803
346 フィルタ系とは? 804
347 セカンダリバッファーにエフェクトをかける 805
348 セカンダリバッファーのエフェクトを解除する 807
349 複数のエフェクトを重ねる 808
コーラス 809
350 コーラスとは? 810
351 コーラスをかける 811
352 コーラス効果を調整する 812
コンプレッサー 813
353 コンプレッションとは? 814
354 コンプレッサーをかける 816
355 コンプレッション効果を調整する 817
ディストーション 820
356 ディストーションとは? 821
357 ディストーションをかける 824
358 ディストーション効果を調整する 825
エコー 825
359 エコーとは? 826
360 エコーをかける 827
361 エコー効果を調整する 828
フランジャー 829
362 フランジャーとは? 830
363 フランジャーをかける 831
364 フランジャー効果を調整する 832
ガーグル 833
365 ガーグルとは? 834
366 ガーグルをかける 835
367 ガーグル効果を調整する 836
ウェーブス・リバーブ 837
368 ウェーブス・リバーブとは? 838
369 ウェーブス・リバーブをかける 839
370 ウェーブス・リバーブ効果を調整する 840
I3DL2リバーブ 841
371 I3DL2リバーブとは? 842
372 I3DL2リバーブをかける 843
373 I3DL2リバーブ効果を調整する 845
パラメトリック・イコライザー 846
374 パラメトリック・イコライザーとは? 847
375 パラメトリック・イコライザーをかける 848
376 パラメトリック・イコライザー効果を調整する 849
15-4 3D再生 850
377 3Dサウンドとは? 851
378 HRTFとは? 852
379 セカンダリバッファーに3D効果をかける 853
380 音源を空間的に移動する 856
381 音源を空間的に回転させる 858
382 音源の最小・最大距離を設定する 859
383 音源の速度を設定する 860
384 リスナーとは? 861
385 リスナーを移動する 862
386 リスナーを回転させる 863
387 リスナーの速度を設定する 864
388 リスナーにドップラー効果をかける 865
15-5 マルチチャンネル再生 865
389 マルチチャンネルとは? 866
390 マルチチャンネルのハード環境を整える 867
391 マルチチャンネルWAVファイルをマルチ再生する 868
392 マルチチャンネルWAVファイルをモノラルにダウンミックスする 869
393 マルチチャンネルWAVファイルをステレオにダウンミックスする 872
394 マルチチャンネルWAVファイルの特定チャンネルを再生する 874
395 4つのモノラルWAVファイルをマルチチャンネル再生する 875
396 6つのモノラルWAVファイルを5.1チャンネルで鳴らす 876
397 WAVファイルがマルチチャンネルかどうか調べる 877
398 マルチチャンネルのセカンダリバッファーを作成する 878
399 特定チャンネルのセカンダリーバッファーを作成する 879
400 WAVE_FORMAT_EXTENSIBLE構造体(及びWAVEFORMATEX構造体)の詳細 881
401 WAVデータフォーマットの詳細 884
16章 録音 886
402 サウンドのキャプチャーってなに? 887
403 とにかく今スピーカーから出ている音を録音したいんです! 888
404 静的バッファで録音(簡単版) 891
405 ストリームバッファで録音(完全版) 892
406 キャプチャーデバイスってサウンドカードと違うの? 893
407 サウンドキャプチャーする 894
408 キャプチャーしたサウンドをWAVファイルにする 897
17章 サウンドカードの調査 899
409 利用可能なサウンドカードを列挙する 900
410 サウンドカードの再生能力を調べる 902
411 サウンドカードのキャプチャー能力を調べる 904
4部 DIRECTINPUT 907
18章 入力(ユーザー→デバイス) 908
18-1 初期化 908
412 キーボード初期化の流れ 909
413 マウス初期化の流れ 910
414 ゲームコントローラー初期化の流れ 911
415 協調レベルとは? 912
416 デバイスの取得とは? 913
18-2 入力データ取得 913
417 押下されているキー(キーボード)を取得する 914
418 DirectInputを使わないで押下されているキー取得 GetKeystate版 916
419 マウスの動きを取得する 917
420 マウスボタンの押下を取得する 919
421 DirectInputを使わないでマウス入力を取得する 920
422 ゲームコントローラーのユーザー操作を取得する 922
423 アクセス権の消失に対処する 923
19章 フォースフィードバック(デバイス→ユーザー) 924
19-1 FFBの基本と共通事項 924
424 フォースフィードバックとは? 925
425 バイブレーションとフォースフィードバック 926
426 マグニチュードとは? 927
427 DirectInput時間の単位は? 928
428 ディレクションとは? 929
429 エンベロープとは? 930
430 サチュレイションとは? 933
431 コウエフィシェントとは? 936
432 なぜオートセンターを無効にするの? 937
433 フォースの種類について 938
19-2 能動的フォース(ユーザー入力非感応タイプ) 938
コンスタント(一定)フォース 938
434 コンスタントフォースとは? 939
435 コンスタントフォースを初期化する 941
436 コンスタントフォースをかける 942
ランプ(傾斜)フォース 942
437 ランプフォースとは? 943
438 ランプフォースを初期化する 945
439 ランプフォースをかける 946
ピリオディック(周期)フォース 946
440 ピリオディックフォースとは? 947
441 ピリオディックフォースのパターンについて 948
442 スクエア(矩形波)パターンの初期化 950
443 サイン(正弦波)パターンの初期化 951
444 トライアングル(三角波)パターンの初期化 952
445 ソウトゥース(ノコギリ刃)パターンの初期化 953
446 ピリオディックフォースをかける 954
19-3 受動的フォース(ユーザー入力感応タイプ) 955
コンディション(条件)フォース 955
447 コンディションフォースとは? 956
448 コンディションフォースの種類について 959
449 スプリング(ばね)の初期化 960
450 フリクション(摩擦)の初期化 961
451 ダンパー(緩衝器)の初期化 962
452 イナーシャ(慣性)の初期化 963
453 コンディションフォースを有効にする 964
19-4 FFB機器の調査 964
454 FFBコントローラーを検出する 965
455 FFBコントローラーの能力を取得する 967
5部 DIRECTSETUP 969
20章 DirectSetup 970
456 そもそもDirectSetupって何? 971
457 再頒布とは?Redistって何? 974
458 EULAって何? 975
459 DirectXランタイムバージョン番号について 976
460 D3DX系のdllバージョン番号について 978
461 再頒布処理に必要なファイル 980
462 EULAを表示する 981
463 自分のゲームにDirectXセットアップを実装する 982
6部 不具合対応 985
21章 不具合症例ごとの原因と対策 986
21-1 一般 986
464 DirectXコントロールパネルがない 987
465 コンパイラーのエラー 988
466 DirectXメモリーリークと一般メモリーリーク 989
467ビルドエラー、未解決の外部シンボル _main又は_WinMain@16 991
468 「d3dx9_○○.dllが見つかりません」で実行できない 992
469 ビルドエラー、「キャストが必要です。」「 から ‘LPCWSTR’に変換できません」 993
21-2 Direct3D 993
470 画面に映らない 994
471 メッシュや線が真っ黒になる 996
472 メッシュや線が真っ白になる 997
473 画面がマゼンタ、緑の点滅でちらつく 998
474 ポリゴンがバラバラ、引き伸ばされ、とにかくメッシュが壊れている 999
475 スケーリングすると明るく、暗くなる 1000
476 テクスチャが貼られない場合の原因は? 1001
477 メッシュがカメラに近くなると”くり抜かれる” 1002
478 重なっているポリゴンに汚い”しましま”が入る 1004
479 線に色が付く 1006
480 レンダリングが緑色っぽくなる 1007
481 3DCGソフトでは問題ないのにXファイルにするとポリゴンが欠けたりする 1008
482 Xファイルにするとポリゴン数が異常に増える 1009
483 Xファイルメッシュの中心が妙なところになる 1010
484 アニメーションが同じモーション 1011
485 回転しているだけなのにスケーリングする 1012
486 壁をすり抜ける 1013
487 空(そら)メッシュに陰影を付けたくない 1014
488 ポリゴン境界に線 1015
489 ウィンドウサイズ変更するとマウス座標がずれる 1016
490 回転が逆 1017
491 シェーダーでテクスチャ、マテリアル等の変更が反映されない 1018
492 どうしてもDirectXメモリリークが起きる 1019
21-3 DirectSound 1019
493 ボツっとノイズが入る 1020
サンプルプログラムの実行動画
Direct3D初期化まで
008 最小シェーダー
ディフューズの反映
010 陰影くらいは付けたい
テクスチャを貼りたい
ポイントのレンダリング
ポイントのレンダリング 2D
ポイントスプライト 3D
ポイントスプライト 2D
ポイントスプライト 2D 頂点にサイズ
ポイントスプライトのサイズ変更 3D
ポイントスプライトのサイズ変更 2D
パーティクルらしく
ラインのレンダリング
ポリゴンのレンダリング
スプライトをレンダリング ID3DXSprite
スプライトをレンダリングする Textured Quads
スプライトの抜け色を抜く ID3DXSprite
スプライトの抜け色を抜く Textured Quads
スプライトを重ねる ID3DXSprite
スプライトを重ねる Textured Quads
ビルボードのレンダリング
ビルボードの仕組み可視化
頂点バッファでポリゴン
頂点バッファでポリゴン 頂点色
頂点バッファでポリゴン マテリアル色
頂点バッファでポリゴン 色、陰影
頂点バッファでポリゴン 色、陰影、光沢
頂点バッファでポリゴン テクスチャー
頂点バッファでポリゴン テクスチャー、陰影、光沢
スフィアのレンダリング
ボックスのレンダリング
シリンダー(円柱)のレンダリング
トーラス(ドーナツ形)のレンダリング
ティーポット(きゅうす)のレンダリング
3Dフォントのレンダリング
Xファイルメッシュのレンダリング
複数のXファイルメッシュをレンダリングする
プログレッシブメッシュをレンダリングする
剛体アニメーションメッシュをレンダリングする
剛体アニメ 時間指定によりモーション切り替え
剛体アニメ トラック指定によりモーション切り替え
スキンメッシュのレンダリング
スキンメッシュ 時間指定でモーション切り替え
スキンメッシュ トラックでモーション切り替え
頂点バッファでメッシュ
頂点バッファとインデックスバッファでメッシュ
頂点バッファとインデックスバッファでメッシュ 色
頂点バッファとインデックスバッファでメッシュ 色、陰影、光沢
頂点バッファとインデックスバッファでメッシュ テクスチャー
頂点バッファとインデックスバッファでメッシュ テクスチャー、陰影、光沢
情報用文字のレンダリング
もじもじ君を使う
色を付ける
プラスチックのような質感
ゴムのような質感
金属のような質感
テクスチャを貼る
テクスチャのメモリ的サイズ
テクスチャの透過部分
テクスチャブレンド
特殊なテクスチャ座標を生成
テクスチャで鏡を作成
テクスチャ自体を動かす
スプライトのテクスチャを反転
プログラマブルシェーダーでテクスチャを貼る
マルチテクスチャでメッシュを燃やす
プログラマブルシェーダーで燃やす
プログラマブルシェーダーで焦がす
メッシュの頂点のみレンダリング
メッシュのワイヤーフレームをレンダリング
フラットシェーディングする
グーローシェーディングする
フォンシェーディングする
トゥーンシェーディング(セル画)する
トゥーンシェーディング(セル画)する テクスチャ付き
ランバート 頂点単位
ランバート ピクセル単位
フォン 頂点単位
フォン ピクセル単位
グーローシェーディングにより陰影
ランバートシェーダーで陰影
光沢を付ける
フォンシェーダーで光沢
アイスシェーダーで霜
オーレン・ナーヤー 頂点単位
オーレン・ナーヤー ピクセル単位
クック・トランス 頂点単位
クック・トランス ピクセル単位
アイス 頂点単位
アイス ピクセル単位
Effectを使わないでHLSL
ノーマルバンプマッピング(ハイトマップ版)
ノーマルバンプマッピング
海水面を作る
スフィアマップで擬似的に映り込ませる
スフィアマップで擬似的に映り込ませる(背景付)
キューブマップでリアルに映り込ませる
サーフェイスで映り込み
奇妙な映りこみ
アルファブレンディングする
カメラ位置に依存しないアルファブレンディング
同じメッシュ内部でのアルファブレンド
アルファ付きテクスチャの特定領域だけを透過させる
透過している裏ポリゴンを自然にする(カリングトリック)
平行移動
回転
スケーリング
ビルボード化
任意画面位置に固定表示
ぺちゃんこ
カメラの移動
カメラの回転
物体を注視
フォロートラック
回り込みトラック
クレーン
ズームイン・アウト
ドリーイン・アウト
画面に対して絶対回転
画面に対して絶対回転(クォータニオン版)
ビュー行列の手動作成
ポイントライト 減衰
スポットライト 減衰
スポットライト ソフトエッジ
スポットライト ソフトエッジ 減衰
フェードインアウト ホワイトイン
フェードインアウト ホワイトアウト
フェードインアウト ブラックイン
フェードインアウト ブラックアウト
アンチエイリアシングをかける
頂点フォグの不具合
範囲指定フォグ
密度ベースフォグ
頂点フォグ
ピクセルフォグ
グラウンドテクスチャードフォグ
シーン全体をぼかす
簡易モーションブラー(高速)
距離によるぼかし
DOF被写界深度
ピクセルモーションブラー
ピクセルモーションブラー アニメで確認
平面投影の影
丸影 ソフトエッジ
シャドーボリュームの影
ポイントライト時のシャドーボリューム
シャドーボリューム自体を可視化
ダブルステンシルでシャドーボリューム
シャドーマップで影
シャドーマップで影(ライティング加味)
シャドーマップで影(ライティング+テクスチャー加味)
深度テクスチャーを可視化
アニメーションメッシュに平行投影の影
スキンメッシュに平行投影の影
アニメーションメッシュにシャドーボリューム
アニメーションメッシュにシャドーマップ
キューブシャドウマップ
キューブシャドウマップ 深度マップ可視化
ブルーム ガウシアンブラー 1パス 3×3カーネル
ブルーム ガウシアンブラー 1パス 5×5カーネル
ブルーム ガウシアンブラー 2パス 3×3カーネル
ブルーム ガウシアンブラー 2パス 5×5カーネル
ブルーム ガウシアンブラー 2パス 7×7カーネル
ラジアルブラー
ゴッドレイ
ゴッドレイ 光源移動
ゴッドレイ 背後モデル考慮
バウンディングスフィア
アニメーションメッシュのバウンディングスフィア
AABB
OBB
OBBツリー
直線と無限遠平面の交差
平面方程式を求める
直線と有限遠平面の交差
直線と平面の交点座標
直線(レイ)とメッシュの交差判定
直線(レイ)とメッシュの交差判定(完全版)
交差しているメッシュ内ポリゴンを得る
メッシュ内ポリゴンの平面方程式
レイとメッシュ内ポリゴンの交点座標
レイとアニメーションメッシュの交差
交差しているアニメメッシュ内パーツメッシュ
交差しているアニメメッシュ内ポリゴン
アニメメッシュ内ポリゴン平面方程式
レイとアニメメッシュ交差座標
自由落下のみ
自由落下、地面でバウンド
反射
ポリゴン単位で反射
障害物を滑る
坂を登る
階段を上る
デコボコ地面を歩く
動く面上に対しての滑り
滑っている方向に回転する
かくれんぼ用発見システム
モーダルダイアログ全体にレンダリング
モーダルダイアログの一部にレンダリング
モードレスダイアログ全体にレンダリング
モードレスダイアログの一部にレンダリング
テクスチャ上にレンダリング
1つのビューを分割レンダリング
異なるビューを分割レンダリング
バックミラー
1つのビューを別ウィンドウにレンダリング
異なるビューを別ウィンドウにレンダリング
3D空間をマウスクリック
ダーティ領域を設定する
テクスチャをロックする
ビデオメモリにあるテクスチャをロックする
テクスチャ内のピクセルを変更
テクスチャを単色で塗りつぶす
テクスチャ内のイメージを動かす
スナップショットを保存
テクスチャ上にレンダリングする
デスクトップのピクセルデータ取得
ウィンドウのピクセルデータ取得
メッシュ内の頂点数
メッシュ内のポリゴン数
頂点バッファから頂点情報
頂点に接線情報付加
ポリゴンの3頂点を取得
ポリゴンの頂点法線を取得
ポリゴンの面法線を取得
属性バッファの内容表示
属性テーブルの内容表示
属性バッファの活用例
隣接性バッファの表示
隣接性バッファの活用例
グラフィックス環境能力調査
シェーダー能力調査
WAV読み込みと再生
待機再生と即時再生
静的バッファ再生
パン
周波数変更(スピード、テンポ変更)
ボリューム変更
バックグラウンド再生
ストリーミング(メモリ)
完全ストリーミング(ファイル)
エフェクト再生
多重エフェクト
コーラス
コンプレッサー
ディストーション
エコー
フランジャー
ガーグル
ウェーブス・リバーブ
I3DL2リバーブ
パライコ
3D再生
音源を移動
音源を回転
リスナーを移動
リスナーを回転
マルチ→マルチ再生
マルチ→モノラル ダウンミックス
マルチ→ステレオ ダウンミックス
マルチ→指定チャンネル
モノラル4本→マルチ再生
モノラル6本→5.1チャンネル再生
静的バッファで録音(簡単版)
ストリームバッファで録音(完全)
サウンドカード列挙
再生能力調査
キャプチャー能力調査