■
OpenGL 関数を呼び出すたびにエラーチェックを行いたい。例として、
glEnable(GL_LIGHTING);
// ...
if (glIsEnabled(GL_LIGHTING)) {
// ...
}
glEnable(GL_POLYGON_OFFSET);
glPolygonOffset(1, 1);
というコードを考える。マクロ OGL を導入しよう。
OGL(func, (arg0, arg1, arg2, ...))
このマクロを導入すると、
OGL(glEnable, (GL_LIGHTING));
// ...
if (OGL(glIsEnabled, (GL_LIGHTING))) {
// ...
}
OGL(glEnable, (GL_POLYGON_OFFSET));
OGL(glPolygonOffset, (1, 1));
のように書き直せる。エラーチェックを行わない場合のマクロの定義は、
#define OGL(func, args) func args
である。さて、それじゃあ、エラーチェックを行う場合には?