OpoenGL5年ぶりくらいなんで思い出す作業も兼ねてここに記しておこうかと思う。思うだけ。
この記事の続き物みたいなものなんでSDLを使用する。
調べたこと
OpenGLについての勘違い
自分は今まで、世にあるグラフィックボードをOpenGL側がサポートして描画のあれこれを管理していると思っていた。
しかし、実際にはOpenGL側が定めた仕様に対してハードウェア側が対応するというかたちになっているらしい
一応覚えておいて損はないと思うのでφ(..)メモメモ
OpenGLのプロファイルについて
参考URL OpenGL Context
OpenGLは3.0まで下位互換があったらしい。
OpenGL1.1の環境で2.1の実装コードを動かしても問題なく動作するが、3.1以降は機能の廃止という概念が存在し、一部機能が廃止された。
Profileを指定することによって3.1以降でも廃止された機能使えるようにできるするのがOpenGLのプロファイルという概念
Core ProfileとCompatibilityの2つが存在し、それぞれ
種類 | 概要 |
---|---|
Core Profile | 廃止された機能は無効 |
Compatibility Profile | 廃止された機能も許可 |
という意味合いになっている
周辺のライブラリとか
GLFW
OpenGL Framework
ライセンス
zlib/libpng license
オープンソースでマルチプラットフォームなOpenGLのフレームワーク
OpenGL,OpenGL ES, Vulkanに対応していて、ウィンドウ・コンテキスト・入力・イベント・サーフェスの作成用APIを提供してくれる
余談 サーフェスについて
以下のURLが参考になった
http://glassonion.hatenablog.com/entry/20150831/1441027769
OpenGL では描画処理を行うバックバッファのことをフレームバッファ、描画処理結果を表示するフロントバッファのことをレンダーバッファといいます。またグラフィックが表示されている空間のことをサーフィス(Surface)と呼びます。
バッファ周りの理解は結構ぼんやりとした感じだったので、図解してくれていてとてもイメージしやすかった
GLEW
OpenGL Extension Wrangler Library
ライセンス
Modified BSD License/Mesa 3-D License(MIT)/Khronos License(MIT)
C/C++で構成されたオープンソースでクロスプラットフォームなOpenGLの拡張機能をロードするためのライブラリ
拡張機能の読み込みが非常に簡単にできる
2019/11/17時点ではOpenGL4.6(最新バージョン)に対応している
とりあえずglewInitしておけばおk
glewExperimental
glewExperimental = GL_TRUE;
部分的にサポートを有効にすることができる
コアプロファイルを指定した時に使う?
GLM
OpenGL Mathematics
ライセンス
Happy Bunny License/MIT License
http://glm.g-truc.net/copying.txt
C++で構成されたヘッダーオンリーの数学ライブラリ(ヘッダーオンリーすごいなぁ)
GLSLライクな文法になっているらしい
参考にしたサイトとか
OpenGLに入門する前に知っておきたかったこと
https://kamino.hatenablog.com/entry/opengl-prior-knowledge
OpenGLプログラミング
https://ja.wikibooks.org/wiki/OpenGLプログラミング
OpenGL ES入門 その1 -描画の仕組みとバッファ-
http://glassonion.hatenablog.com/entry/20150831/1441027769
本当はポリゴン描画のところまで書き留めておきたかったのだけど、コードの量が結構多くなりそうだったのでやめた