OpenGLをC++11でラップしてみんとてするなり 第1回
株式会社CFlatの技術ブログをスタートします。
メンバーが技術的に面白いと感じる題材、ハマったことなどをツラツラとアップしていきます。
だいたい週一回程度のペースのアップを考えております。
最初から連載物になりますが、それではどうぞ。
『諸君、私はGLが好きだ。諸君、私はGLが好きだ。諸君、私はGLが大好きだ。ついでにC++も大好きだ。』
OpenGLのAPIはC言語で提供されているため、C++でOpenGLをそのまま使おうとすると、どうしても“C++らしい”コードになってくれません(勿論、better CとしてのC++で良いのであれば別ですが)。
そこでC++の勉強も兼ねて、OpenGLの“C++らしい”ラッパークラスを作ってみよう、というのが今回のテーマです。
なお、“C++らしさ”とは何かという点については様々な意見もあるでしょうが、当ブログでは、次のように定義するものとします:
“C++らしい”とは、
(1) クラスを活用したオブジェクト指向のプログラム
(2) 型の差異やそれに伴う動作の違いを、全てテンプレート引数の与え方でカスタマイズする
(3) inlineやconstexpr等のコンパイル時最適化を利用して、オーバーヘッドをなるべく低減する
特に(2)(3)は、C++を、JavaやC#などの他のオブジェクト指向プログラミング言語と差別化する、大きな特徴ではないでしょうか(いわゆるSTLが典型的なところです)。
ところで、スムーズにラッパークラスを作るために、まずはOpenGLの設計思想について理解しておきたいところです。
次回は一度その辺りの説明をしようかと思いますので、既にご存知の方は次々回をお待ちいただければと思います。