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

である。さて、それじゃあ、エラーチェックを行う場合には?