OpenGLをC++11でラップしてみんとてするなり 第1回

 株式会社CFlatの技術ブログをスタートします。
 メンバーが技術的に面白いと感じる題材、ハマったことなどをツラツラとアップしていきます。
 だいたい週一回程度のペースのアップを考えております。
 最初から連載物になりますが、それではどうぞ。



 『諸君、私はGLが好きだ。諸君、私はGLが好きだ。諸君、私はGLが大好きだ。ついでにC++も大好きだ。』

 OpenGLAPIC言語で提供されているため、C++OpenGLをそのまま使おうとすると、どうしても“C++らしい”コードになってくれません(勿論、better CとしてのC++で良いのであれば別ですが)。
 そこでC++の勉強も兼ねて、OpenGLの“C++らしい”ラッパークラスを作ってみよう、というのが今回のテーマです。
 なお、“C++らしさ”とは何かという点については様々な意見もあるでしょうが、当ブログでは、次のように定義するものとします:

C++らしい”とは、
(1) クラスを活用したオブジェクト指向のプログラム
(2) 型の差異やそれに伴う動作の違いを、全てテンプレート引数の与え方でカスタマイズする
(3) inlineやconstexpr等のコンパイル時最適化を利用して、オーバーヘッドをなるべく低減する

 特に(2)(3)は、C++を、JavaC#などの他のオブジェクト指向プログラミング言語と差別化する、大きな特徴ではないでしょうか(いわゆるSTLが典型的なところです)。

 ところで、スムーズにラッパークラスを作るために、まずはOpenGLの設計思想について理解しておきたいところです。
 次回は一度その辺りの説明をしようかと思いますので、既にご存知の方は次々回をお待ちいただければと思います。