台風が直撃しそうなので、すでに強い風雨の中を頑張って早めに帰宅したのだが、どうもその時刻が最も強かったような…
最近見つけた OpenGL の不具合に取り組む。線画を描くときには GL_LIGHTING
をオフにし、三次元の物体を描く時にはオンにするのだが、glEnable(GL_LIGHTING)
のあとの照明の当たり方がどうもおかしい。この症状が、手元のマシンでは Mac 10.6 でだけ現れ、10.5 や Windows では現れない。対応に困って情報を探しまわったところ、この記事が見つかった。glEnable(GL_LIGHTING)
のあとに、次のコードを入れて、GL_LIGHT0
の位置をリセットすればいいらしい。
static GLfloat pos[] = {0, 0, 1, 0}; glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glLightfv(GL_LIGHT0, GL_POSITION, pos); glPopMatrix();
確かに動くようにはなったけど、これシステムのバグだよねえ…
タグ:プログラミング