This pdf book is an OpenGL4(on Linux) primer for those who wants to understand what the ‘OpenGL’ is and to be able to use OpenGL.
本文「はじめに」より
OpenGLの良い入門書やインターネットページが見当たらない。glutやGLFWなどを使ったチュートリアルは断片的に見つかるものの、総合的な解説が見つからない。そんな状況を変えるべくglutやGLFWなどのラッパーライブラリに依存しないネイティブなOpenGLの入門書を目指しました。サードパーティライブラリに依存すればするほど応用の幅やスキルの幅が狭まってしまいます。
できる事なら極力フルスクラッチ的なコードで学習するべきというのがノースブレインの書籍制作におけるポリシーでもあります。
ただ当初は完全なOpenGLオンリーのサンプルを作っていたのですが、その際あまりにもコードが長くなってしまい、これはこれでマズいのではないかと思い始め、最終的にはglewにだけは依存することにしました。
glewはOpenGL Extension Wrangler Libraryの略で、一言で言うと面倒な関数インポートを裏でやってくれるライブラリです。このような機能は本来はAPI自体に備わっているべきなのですが、OpenGLの場合はクロスプラットフォームに対応するため、それらの基本部分が欠如しています。DirectXなどでは考える必要のない事をOpenGLでは考えなくてはならないのですがglewはそれを解決してくれます。つまりOpenGL+glewでの解説がちょうどDirectXのネイティブ解説と同じくらいのレベルだと思ってください。素のままのOpenGLだけだとさすがに入門書としては難しい部分があります。glewは陰で縁の下の力持ち的に機能するライブラリなので、学習中にglewを意識することは無いかと思います。
本書はOpenGLコアとglewという構成でサンプルプログラムを作成しています。
しかし、既に述べた通りglutやGLFWなどには依存していませんので、良い感じでOpenGLネイティブのスキルが着実に身につく内容になっていると思います。
なお、OpenGLのみのサンプルに興味のある方のためにOpenGLコアのみの(glewも使っていない)サンプルも巻末サンプルとして付けておきました。ある程度学習が進んだ時あるいは学習を終えた時に見ると良いのではないかと思います。
対象読者はGLSLでシェーダーの基礎を身につけたい方、DirectXはできるがOpenGLは未経験な方、3D基礎はなんとなく理解している人でOpenGLを初めての3D APIに選んだ方、なんとなくOpenGLのコーディングは出来るがしっかり基礎を身に着けたい方、OpenGLの各種概念を正しくしっかり把握したい方。というところでしょうか。
本書のタイトルはOpenGL4 primer for Linux(OpenGL4入門 Linux版)です。「入門」としていますが、3D自体の基礎まで解説するものではありません。本書の対象読者は3Dの基礎(最低限度レベル)が身についているという前提に立っています。
OpenGLやDirectXのようなグラフィックスAPIの入門を解説するときは3Dの入門的な解説も含まれますが、APIの入門書を書くたびに同じ解説を繰り返すのはどうなのだろう?という思いから「3D入門」という本を本書とは別に既に制作しています。もし読者に3D基礎が全く無いのであれば、まず3D入門を読まれてから本書を読んでいただきたいと思います。
実は本書は3D入門よりも先に着手したプロジェクトです。本書プロジェクトのごく初期の段階、本書の構成を考えている時に「3Dの基礎部分は分離して別の本にすれば効率的だ」と考え、急遽3D入門の制作プロジェクトのほうを優先的に開始したという経緯があります。3D入門部分を1つの本として分離したことにより、API解説本の中で行う3D基礎解説よりも丁寧に3Dの基礎を解説する本が出来たと思っています。
本書はやはり入門書であるので、サンプルの複雑さはそれほど高くありません。まさに3D入門を終えた人が理解できるレベルになっています。
また繰り返しになりますが、サードパーティのライブラリに依存せずに3Dモデルを構築し表示するということを行っているので、ゲームプログラマーやCGエンジニアを職業にしようという人、あるいはそのレベルを目指す人にとって普遍のスキルを提供できるものとなっています。
Linux上のOpenGL
本書はLinux上でのOpenGLを解説します。OpenGLはクロスプラットフォーム対応なのでLinuxだけではなくWindowsやMacOS上でも動作します。Windowsでしか動作しないAPIであるDirectXとはここが大きく異なる点です。
Linuxはディストリビューションが多くありますが、全てのディストロで動作確認はしていません。筆者が動作確認したものは、
Fedora(Red Hat系)
Mint(Debian系)
Ubuntu(Debian系)
の3つのディストロになりますが、ディストロは違えどLinuxはLinuxです。サンプルはX11ウィンドウシステム、OpenGL、GLEW、GLMの上で動いていますが、これらは異なるディストロでも全て同じものですので、上記3つ以外のディストロでも動作するものと考えています(逆にもし動かなければそのディストロはLinuxとは言えないかもしれません)。
サンプルはウィンドウの表示というごく簡単な段階からゆっくり進行していきます。本書が読者のOpenGLキャリアの出発点となれば無上の喜びです。
目次
はじめに 7
サードパーティライブラリ非依存 7
対象読者 8
Linux上のOpenGL 9
1章 ウィンドウの表示 10
2章 HELLO OPENGL 19
3章 コンテキストとは? 30
4章 HELLO トライアングル 35
5章 見えないコードを想像せよ 54
6章 ポリゴンの色を変える 57
7章 ポリゴンを動かす 61
8章 GLSLでシェーダー入門 66
シェーダーとは? 66
シェーダーの概要 67
C++側からGLSL側にどうやって渡すか 70
バーテックスシェーダーの典型的な処理 74
フラグメントシェーダーの典型的な処理 75
9章 ランバートシェーディング 77
コード解説 84
10章 テクスチャーマッピング 88
画像からテクスチャーを作成する 89
テクスチャーをポリゴンに貼り付ける 91
11章 頂点の作り方は様々 95
インターリーブ 96
ノンインターリーブ 99
12章 VBO 104
13章 VAO 107
14章 クアッド 112
15章 インデックス 114
16章 エラー表示 117
17章 キューブ 120
18章 外部ファイルからモデルデータを読む 123
19章 スキンメッシュ 164
APPENDIX A GLEWすら使わないサンプル 186
GLEWは何をしてくれていたのか 186
関数の手動ロード 194
glmすら使わない? 197
APPENDIX B コアとエクステンションとは? 198
ページ概観
本書は電子書籍です
本書はPDFというデジタルファイルになります。本書の閲覧はパソコン、ノートパソコンはもちろん、タブレット端末、電子書籍リーダー(カラーPDFが閲覧可能なもの)、その他カラーPDF電子書籍が閲覧可能なデバイスで可能です。
セキュリティについて
パスワード
セキュリティの理由により、本書を開く際には、パスワードの入力が必要になります。
パスワードはご購入されたときに入力したメールアドレスになります。
透かし
本書のページ下部に、ご購入者の氏名で”透かし”が入ります。これは無断複製の抑止力のための措置です。
(その氏名での透かしは、もちろんそのご購入者様の電子書籍だけに入ります。)
内容のコピー、印刷について
本書のテキスト及び図表はコピーできません。また本書は印刷できません。
また、内容をコピーあるいは印刷するような改造はしないでください。
決済後のダウンロード
ご 決済時に入力されたメールアドレス宛てに、決済後12時間以内にダウンロード先のURLを記入したメールを送信いたします。メール受信後その URLに行き、電子書籍(PDFファイル)をダウンロードしてください。ダウンロードできる期間は2週間となります。(通常、ダウンロードは1回で済みま す。
閲覧の度にダウンロードが必要なわけではありません)