スタックが見えないよ!!(ふて6)
glコールの返り値はvoidなので、エラーチェックは返り値ではなくglGetErr()でエラーフラグをチェックする必要がありました。
最初はなんだこりゃ面倒なと思ったのですが、エラーチェックルーチンを完全に独立して記述できるので楽チンといえば楽チンですね。
bool CheckGlErr() { unsigned int nErr = glGetError(); if ( nErr != GL_NO_ERROR ) { printf("glErr[%d](%s)", nErr, GetGlErrTxt(nErr) ); // GetGlErrTxt()という関数を作ったと思ってください. assert( !"CheckGlErr failed!" ); } return nErr == GL_NO_ERROR; }
こんな関数を作ってglほげほげの処理を行った後にとりあえずCheckGlErr()を呼び出しておけばOK、みたいな。とにかく動くコードを早く作るには1にも2にもエラーチェックです。
しかし今困ったことがありまして、今使っているVisual C++ 2005 Express Editionが、なぜかassert発生時に「呼び出し履歴」を見てもスタックが正しく表示されないのです。呼び出し履歴ウィンドウには[下のフレームは間違っているか、見つかりません。msvcr80d.dllに対して読み込まれたシンボルはありません。]と言われてまともにスタックが見えないのですよね。おいおい調べていきたいとは思っていますがなんでだろう…