第1部 コンピュータグラフィックスの基礎
第1章 プログラミングの準備
1.1 Visual Studioを用いたプログラム開発
1.1.1 コンソールアプリケーションの作成
1.1.2 設定の変更
1.2 glutとOpenGLの利用
1.3 freeglutのインストール
1.4 freeglutを利用したプログラミング
この章で学んだOpenGLとglut関数
第2章 OpenGLとglutを用いた2次元コンピュータグラフィックス
2.1 2次元コンピュータグラフィックスのプログラミング
2.1.1 図形の指示
2.1.2 座標の指示
2.1.3 図形の色分け
2.2 座標の投影とビューポート変換
2.2.1 正投影の導入による表示範囲の拡大
2.2.2 ウィンドウとビューポート変換
2.2.3 アスペクト比の変更
2.2.4 図形中心の表示
参考文献
この章で学んだOpenGLとglut関数
第3章 3次元コンピュータグラフィックスへの拡張
3.1 正投影
3.1.1 視点の変更
3.1.2 視体積の範囲決め
3.1.3 方位角と仰角の利用
3.1.4 マウス操作による視点の変更
3.2 ポリゴンの描画
3.2.1 隠面消去
3.2.2 シェーディング
この章で学んだOpenGLとglut関数
第二部 OpenGLを用いた並列図形処理
第4章 ボロノイ図の生成
4.1 ボロノイ図とは
4.2 ボロノイ図の画像生成
4.3 実装の準備
4.4 円錐形状の描画
4.5 画像の取得と利用
参考文献
この章で学んだOpenGLとglut関数
第5章 オフセット平面の生成
5.1 デプスバッファを用いたオフセット面の計算
5.2 STLフォーマット
5.3 STLファイルの読み込み用関数
5.4 ポリゴンモデルの表示用関数
5.5 オフセットプログラムの準備
5.6 オフセット処理の実現
5.6.1 球、円筒形、スラブ形状の描画
5.6.2 オフセット面の取得
5.6.3 オフセット面の描画
5.7 プログラムの完成
参考文献
この章で学んだOpenGL関数
第3部 CUDAの導入とOpenGLとの併用
第6章 CUDAの導入
6.1 CUDAのインストール
6.2 Visual StudioによるCUDAプログラムの開発
6.3 CUDA処理の基本的な考え方
6.3.1 典型的な処理の流れ
6.3.2 GPUの並列処理アーキテクチャ
6.3.3 スレッドによる並列処理
6.3.4 ブロックとグリッド
6.4 CUDA関数の紹介
6.4.1 メモリ管理
6.4.2 データ転送
6.4.3 ブロックとグリッドの定義
6.4.4 カーネル関数
6.4.5 デバイス関数
6.5 プログラム例
6.5.1 CPU処理の実装例
6.5.2 CUDAによる実装
6.5.3 シェアードメモリの利用
参考文献
この章で学んだCUDA関数
第7章 粒子解析とアニメーション表示
7.1 粒子解析法
7.2 粒子解析法アルゴリズムの実装
7.2.1 CPU処理による実装
7.2.2 GPU処理による実装
7.3 VBOの導入
7.3.1 VBOを用いた図形描画
7.3.2 VBOによる粒子群の表示
7.4 CUDAとVBOの併用
参考文献
この章で学んだOpenGL関数
この章で学んだCUDA関数
第8章 拡散方程式の数値解法とアニメーション表示
8.1 差分法による拡散方程式の数値解法
8.2 差分法アルゴリズムの実装
8.2.1 CPU処理による実装
8.2.2 GPU処理による実装
8.2.3 シェアードメモリの利用
8.2.4 テクスチャメモリの利用
8.3 PBOの導入
参考文献
この章で学んだOpenGL関数
この章で学んだCUDA関数
第4部 CUDAによる複雑な図形処理
第9章 メタボール法
9.1 粒子群の濃度場
9.2 ソートによる粒子群のセルへの割り当て
9.3 実装の準備
9.4 基本的なデバイス関数の定義
9.5 カーネル関数の定義
9.6 thrustライブラリ
参考文献
この章で学んだglut関数
この章で学んだCUDA関数
第10章 マーチングキューブ法
10.1 マーチングキューブ法
10.2 アルゴリズムの概要
10.3 実装の準備
10.4 テクスチャメモリの利用
10.5 カーネル関数の定義
10.6 Metaball.cppの修正
参考文献
この章で学んだOpenGL関数
第11章 包含立体の利用
11.1 包含ボックス
11.2 ボックス定義の準備
11.3 AABBとOBBの定義
11.3.1 AABBの定義
11.3.2 OBBの定義
11.4 包含ボックスに関する計算
11.4.1 点と包含ボックス間の距離
11.4.2 包含ボックス間の交差判定
11.5 階層的な包含ボックス
11.6 プログラムの利用法
参考文献
第12章 立体間の衝突検出
12.1 階層的な包含ボックスによる絞り込み
12.2 ポリゴン間の並列交差判定
12.3 撃力ベース法
12.4 実装の準備
12.5 階層的な包含ボックスによる絞り込み
12.6 撃力ベース法による衝突の解消
12.7 衝突判定
12.8 デバイス関数
12.9 カーネル関数
12.10 プログラムの利用法
参考文献
この章で学んだOpenGL関数
あとがき
サンプルプログラムの使い方
索引
第1部、第2部はOpenGLの導入となっている。
例えば第2章の「この章で学んだOpenGLとglut関数」は、
・glMatrixMode
・glOrtho
・glViewport
・glBegin
・glEnd
・glColor3f
・glVertex3*
・glutInitWindowSize
・glutInitWindowPosition
・glutReshapeFunc
となっている。本のタイトルに忠実ではあるが、この辺りは読み飛ばしてもおおむね問題ない人が多いだろう。
全部読んだわけではないが、印象として○○アルゴリズムをCとCUDAで実装しながら勉強するタイプの本。なのでCUDA文法やGPUの構造に関してはあまり踏み込んでいる印象がない。
作りながら覚えるならちょうどいい印象を受けたが、CUDAの辞書として使いたいならお薦めできない。あくまで画像処理の本である。