GLFLによるOpenGL入門
環境
C++
初期の OpenGL は描画アルゴリズムを組み込んだ「固定機能」のパイプラインとして実装されていたので、その機能を組み合わせて「こうすれば絵が出るよ」みたいな教え方ができました
しかし、今の OpenGL は機能の大部分を「プログラマブル」にしてしまったので、どんなアル ゴリズムで描くかは自分で考えてプログラミングしないといけません。つまり、今の OpenGL を 用いたグラフィックスプログラミングでは、CG の理論に関する知識が必須なのです。
そういう知識は、今は Unity や Unreal Engine 4、Lumberyard、chidori、 OROCHI 4、CryEngine などのミドルウェアに組み込まれているので、それらを使えば「手早く」 映像を表示させることができます。これは、特に初心者において重要な要素です。
OpenGLはGPUを制御する基本機能しか持っていないので、CGの知識を使ってツールを自作しないと「いい感じの見た目」は出せない。ゲームエンジンはこれを備えているので、使えばいい感じの映像が素早く出せる。
だから、学校 の授業でしかプログラミングをしたことがない人に OpenGL のような低水準の API によるグ ラフィックスプログラミングを強いるのは、もうナンセンスなんじゃないかと思ったりもします。
読む目的
フルスクラッチで写経する過程で、パイプライン処理と絵の描画の原理を勉強する シェーダとは何かが説明できるようになる
シェーダでできることは何?
シェーダを使うとどんな面白い表現ができる?
OpenGLにおけるシェーダ実行の流れが説明できる
本書を読んでもわからないけど知りたくなったこと
VRでの実装
TODO
読後にやること
読む目的が達成できたか振り返る
p.1
Windows
OpenGL
PCの性能が上がり、ワークステーションではなくPCでもCADを使いたくてOpenGLがWindowsに移植
Windows以外で共通利用できるのはOpenGL(Vulkan)のみ
p.6
OpenGL 3.2以降
これはグラフィックスハードウェアの拡張機能を使用可能にするためのものです。
特に Windows では、Windows がもともとサポートしている OpenGL のバージョンが 1.1 のために、グラフィックスハードウェアがそれ以降のバージョンに対応したものであっても、そのままでは新しい機能を使用することができません。そこで GLEW を使って、グラフィックスハードウェアが持つ全ての機能をアプリケーションプログラムから使えるようにします
頂点処理
変換行列
変換の合成
「変換行列」を使った「座標変換」
「直交座標系」の変換
ビュー変換
投影変換
第8章 形状の表現
「三次元図形」の「描画」
「頂点色」の指定
「図形」の「塗りつぶし」
9章