DIRECTX10/11プログラミング

Dx1011_LandingPage_Header

Northbrainの書籍「DirectX10/11プログラミング」のご紹介とご購入のページです。

概要

本書は、C++ DirectXいわゆるネイティブDirectXの運用方法と活用例について、背景理論を交えながら解説する技術書です。
解説する分野は、
Direct3D10/11(ただしジオメトリシェーダーやテッセレーション関連は範囲外としました)
XAudio2
XACT3
DirectInput8
COM
となっています。
各分野とも、サンプルプログラムによる実際の動作例を提示し、実際のソースコードを解説します。
解説用(学習用)のサンプルとは別に、実務用の部品となることを目的としたクラスライブラリも用意しています。(Direct3D10/11最大の鬼門“メッシュ”のライブラリをソースコードとして提供)

挫折しやすい部分を徹底解説!
陥りやすい不具合の解決実践!

本書は、筆者が2010 年に発行した書籍「ゲームプログラミング入門」を終えた方の、次のステッ プとなるような書籍というコンセプトで作成しています。
もちろん読者の中にはゲームプログラミング入門をお読みになっていない方も多いと思います。
本書を読むにあたり、ゲームプログラミング入門を読んでいることは必須ではありません。あくまでも、コンセプトとレベルの位置づけです。
ゲームプログラミング入門はDirectX ゲームを作成する入門書ですが、オリジナルライブラリを 使い、とにかくゲームを作る、ゲームの基本アルゴリズムを学ぶ、ということに力点を置いてい る本です。DirectX を直接コーディングすることについては、完全に本書のような他の本に委ねています。
本書の位置付けは、何らかのプログラムを作成したことがある、また何らかのゲームを作成 したことがあるもののC++ でDirectX を直接コーディングしたことが無い方、これからネイ ティブDirectX プログラミングを始めたいと考えている方や、DirectX9 までは多少できても DirectX10/11 は初心者だ、という方々を対象読者に想定しています。
DirectX を全く触ったことがない方には最初のDirectX 書籍として、
従来のDirectX しか触ったことがない方には新しいDirectX 書籍として、
入門から応用まで、背景理論を交えながら解説します。
本書の構成は、グラフィック関連、サウンド関連、入力関連の3 つから成り、ゲームを作成す る際に必要となるDirectXAPI 運用及び背景理論を解説しています。とりあえず、本書があれば、 1 本のネイティブDirectX ゲームを実装することが出来るはずです。
グラフィック関連についてはDirect3D10 及びDirect3D11 を解説、
サウンド関連についてはXAudio2 及びXACT3 を解説、
入力関連についてはDirectInput を解説します。(その他、Direct3D11 によるGPGPU や、COM についても解説します。

目次

はじめに 12
Direct3D10 とDirect3D11 のコード差異について 13
SECTION 1 事始め 14
第1章 シンプルな実装を眺める(最もシンプルな3D シューティング
ゲーム) 15
1-1 節 土台作成 (ウィンドウ初期化) 15
1-2 節 クラス化 21
ジャクソン図とは 24
1-3 節 Direct3D の初期化 28
デバイスとスワップチェーンの作成 31
1-4 節 空(から)レンダリング 42
なぜ? 46
1-5 節 ポリゴンを表示 51
1-6 節 ポリゴンを複数表示 64
1-7 節 物体の移動 73
1-8 節 キーボード入力と弾発射! 74
1-9 節 当たり判定 76
1-10 節 音を鳴らす 77
SECTION 2 Direct3D10/11 80
第2 章 3D の基本 81
2-1 節 ベクトルと行列の演算 81
ベクトルとは 81
行列とは 82
ベクトルの使われ方 83
行列の使われ方 84
ベクトル、行列の演算 85
2-2 節 行列でモデルを操る 91
行列によるジオメトリの回転 91
行列によるジオメトリのスケーリング 92
行列によるジオメトリの平行移動 93
2-3 節 変換行列を重ねる 95
変換行列を重ねる 95
回転して移動 95
掛ける順番で結果が変わる 移動して回転 98
個々の変換がかかる順番 99
2-4 節 モデル空間からモニター平面までの流れ 100
メロンとテーブルで流れを把握 100
2-5 節 原点以外を中心とした回転 101
第3 章 シェーダーの基本 105
3-1 節 最小シェーダーで流れをつかむ 105
グローバル構造体(コンスタントバッファー) 106
バーテックスシェーダー 106
ピクセルシェーダー 107
シェーダーをコンパイルする 107
3-2 節 板ポリゴン 110
第4 章 シェーディング 113
4-1 節 色を変える 113
4-2 節 陰影を付ける 114
頂点単位のシェーディング、ピクセル単位のシェーディング 118
4-3 節 光沢を付ける 119
第5 章 テクスチャー 123
第6 章 各種メッシュ 126
6-1 節 スタティックメッシュ 126
ジオメトリのみ 127
陰影を付ける 130
光沢とテクスチャーも付ける 131
完全版 132
6-2 節 階層メッシュアニメーション 134
階層メッシュの原理 135
FBX の設定が必要 136
サンプル解説 140
読み込み部分 141
レンダリング部分 141
6-3 節 スキンメッシュアニメーション 143
コード解説 144
第7 章 モデルの移動、回転、スケーリング 146
7-1 節 モデルの移動 146
7-2 節 モデルの回転 148
7-3 節 モデルのスケーリング 149
第8 章 シーンの移動・回転・ズーム 151
8-1- 節 カメラとシーン 151
8-2 節 シーンの移動 151
8-3 節 シーンの回転 155
視線ベクトル方式 157
回転の合成には注意! 157
ではどうするか? 158
8-4 節 シーンのズームアップ・ダウン 160
第9 章 複数のモデルに対応 162
第10 章 テクスチャー有りと無しモデル 165
10-1 節 テクスチャーの有無で場合分け 165
第11 章 アルファブレンディング 168
11-1 節 アルファブレンディングとは 168
レンダリング“順序” が全て 168
11-2 節 まずいアルファブレンディング 170
11-3 節 修正版 173
カリングトリックで解決 173
第12 章 テキスト描画 176
12-1 節 Dx10 とDx11 の違い 176
12-2 節 Direct3D10 でのテキスト描画 176
12-3 節 Direct3D11 でのテキスト描画 179
原理 179
ソース解説 179
他のプロジェクトでのクラスの組み込み・運用 190
第13 章 当たり判定 192
13-1 節 判定方式の選択基準 192
境界球 192
OBB 192
レイ 193
13-2 節 境界球 193
コード解説 195
メッシュから境界球を得る 197
境界球を可視化 198
13-3 節 OBB 199
OBB の原理 199
コード解説 202
13-4 節 レイ判定 206
基本的な使い方 206
障害物上を滑る 209
第14 章 GPGPU GPU を汎用計算に使う 214
14-1 節 とにかくGPU を使ってみる 214
何をするのか? 217
コンピュートシェーダーを初期化する 217
アプリからコンピュートシェーダーに値を渡す 218
ストラクチャードバッファー 218
コンピュートシェーダーのコード解説 219
コンピュートシェーダーを実行する 226
コンピュートシェーダーから結果を受け取る 227
アンオーダード・アクセスビュー 227
14-2 節 GPU の凄さを体感 228
ソース解説 228
注意すること 230
14-3 節 もっとGPU の凄さを体感 230
dispatch とnumthread の組み合わせ 231
14-4 節 GPU をレイ判定に使う 232
コード解説 234
SECTION3 サウンド基礎 239
第15 章 PCM 240
15-1 節 PCM とは 240
15-2 節 アナログとデジタルの話 241
15-3 節 標本化、量子化、符号化 242
標本化 (Sampling:サンプリング) 242
量子化 (Quantization:クオンティゼイション) 243
符号化 (encoding:エンコーディング) 244
第16 章 WAV フォーマット 245
16-1 節 WAV ファイルの基本構造 245
RIFF とは 245
WAVE ファイルはWAV フォーマット 246
SECTION4 XAudio2 249
第17 章 WAV を再生 250
17-1 節 待ち再生、WAV ファイル読み込みをマスター 250
ソース解説 250
17-2 節 即時再生 260
17-3 節 重ね再生 261
第18 章 エフェクター再生 262
第19 章 3D 再生 264
SECTION5 XACT3 269
第20 章 WAV、xWMA を再生 270
20-1 節 xWMA とは 270
xWMA ファイルを作ってみよう 270
20-2 節 待ち再生 277
読み込みは簡単 277
ソース解説 277
20-3 節 即時作成 284
20-4 節 重ね再生 284
SECTION6 DirectInput 286
第21 章 キーボード 287
21-1 節 DirectInput による入力検知 287
21-2 節 Win32API による入力検知 293
第22 章 マウス 295
22-1 節 DirectInput によるマウス入力 295
22-2 節 Win32API によるマウス入力 297
第23 章 コントローラー 299
InitDinput 関数 304
EnumJoysticksCallback 関数(コールバック関数) 305
EnumObjectsCallback 関数(コールバック関数) 305
PadInput 関数 306
SECTION7 ゲーム実装サンプル 307
第24 章 3D アクションゲーム実装例 308
24-1 節 ゲームについて 308
ルール 308
プレイ風景 308
24-2 節 フレームワーク 311
各クラスの説明 311
クラスの相互関係 312
プロジェクトの組み立て方(ノースブレインの場合) 314
24-3 節 開発開始時に便利な空フレームワーク 320
どこからコードを書き始めるか 320
各種ファイルディレクトリ 320
ユーティリティ関数を作る場所 321
SECTION8 メッシュクラスライブラリ 322
“ 部品” の組み込み方・使い方 323
スタティックメッシュクラスを組み込む 323
階層メッシュアニメーションクラスを組み込む 324
スキンメッシュクラスを組み込む 325
組み込み例 327
巻末付録 328
第25 章 オブジェクト空間からモニター平面までを追跡 329
25-1 節 モデル空間 329
25-2 節 ワールド空間 330
25-3 節 カメラ空間 333
ビュー行列の作り方 335
実際の計算 338
25-4 節 モニター空間 342
パースをかける 342
プロジェクション変換行列を作る 343
ピクセルに変換する行列を作る 345
第26 章 COM の実践による理解 348
26-1 節 COM とは? 348
26-2 節 なぜCOM なのか? 349
26-3 節 COM 用語の統一 351
全般的な留意事項 352
26-4 節 実装とインターフェイスの分離 354
26-4-1 差し替えできないDLL 354
26-4-2 差し替え可能なDLL 358
26-5 節 COM サーバー、COM クライアントの作成 361
26-5-1 COM サーバーの作成 361
26-5-2 COM クライアントの作成 370
26-5-3 レジストリ登録 372
26-5-4 複数のインターフェイスを持つCOM オブジェクト 375
26-6 節 補足 376
DEF ファイルについて 376
マクロについて 376
自分でプロジェクトを新規作成する場合の留意点 377

付属サンプル実行時ビデオ(全てのビデオではありません)

土台(ウィンドウ作成)
空(から)レンダリング 背景色のみ D3d11
ポリゴンの表示 D3d11
ポリゴン複数表示 D3d11
モデルの移動 D3d11
キーボード入力と弾発射 D3d11
弾と的の当たり判定 D3d11
音を鳴らす D3d11
トライアングル(最小シェーダー) D3d11
板ポリゴン(最小シェーダー) D3d11
色を変える D3d11
陰影を付ける D3d11
光沢を付ける D3d11
テクスチャーを貼る D3d11
光沢+テクスチャーを貼る D3d11
OBJからメッシュ ジオメトリのみ D3d11
OBJからメッシュ ジオメトリ+陰影 D3d11
OBJからメッシュ ジオメトリ+陰影+光沢+テクスチャー D3d11
OBJからメッシュ 完全版 D3d11
OBJからメッシュ 最終完全冗長版 D3d11
FBX StaticMesh D3d11
FBX HierarchyMesh D3d11
FBX SkinMesh D3d11
モデルの移動 D3d11
モデルの回転 D3d11
モデルのスケーリング D3d11
シーンの移動 D3d11
シーンの回転 D3d11
シーンの回転改良 D3d11
シーンのズーム D3d11
複数に対応 D3d11
テクスチャー有り無しモデル混在 D3d11
まずいアルファブレンディング D3d11
アルファブレンディング D3d11
デバッグ用文字列の表示 D3d11
境界球 D3d11
メッシュから境界球を得る D3d11
境界球を可視化 D3d11
OBB D3d11
レイ判定 地面で止まる D3d11
レイ判定 壁や床を滑る D3d11
レイ判定 壁や床を滑る D3d11
GPGPU とにかくGPUを使う D3d11
GPGPU 凄さを体感 D3d11
GPGPU もっと凄さを体感 D3d11
GPGPU レイ判定に使う D3D11
XAudio2でwav 待ち再生
XAudio2でwav 即時再生
XAudio2でwav 重ね再生
XAudio2でエフェクター
XACTでwav,wma 待ち再生
XACTでwav,wma 即時再生
XACTでwav,wma 重ね再生
キーボードから入力
DirectInputを使わないでキーボード入力
マウスから入力
DirectInputを使わないマウス入力
game example
スタティックメッシュクラス使用例
スタティックメッシュクラス使用例(完全冗長版)
HierarchyMesh Class how to use
SkinMesh Class How to use DX11

製本版は売り切れております。
PDF電子書籍のご購入は、割引のある当サイトオンラインショップがお得です。