>>931
GLUTの性質上、大域変数が多くなっちゃうのはしょうがないかも。
僕も簡単な描画テストとかGLUTで書くときは、大域変数使いまくりですよ。

まじめにやりたいなら、

class MyApp *my_app = 0;

void keyboard_func(unsigned char *key, int x, int y) {my_app->keyboard_event(key, x, y);}
void display_func() {my_app->display_event();}

int main() {
  my_app = new MyApp;
  glutInit();
  glutKeyboardFunc(keyboard_func);
  (略)
  glutMainLoop();
}

みたいな感じでイベントを全部スルーパスしてやれば、
あとはMyAppの書き方次第では綺麗になるんじゃないでしょうか。

でもまじめにやりたいなら、そもそもGLUT使わないかもw