Ruby‎ > ‎

GL Excess / Ruby

[English | Japanese]

This is a Ruby port of GL Excess (, a Paolo Martella's excellent OpenGL demo project.

All source codes are available under the terms of the GNU General Public License version 2.





  • 2009-12-23
    • Update: Old contact information is updated to the current one.
  • 2008-05-04
  • The glxsruby archive now contains all of the source codes and resources that were distributed individually according to the scene (, etc.).

    • glxs.rb: Now accepts `-s (or --scene)' option. See README.txt for usage.
    • glxs.rb: New runtime commands 'n' and 'p' : Use them for watching `N'ext and `P'revious scene.
    • scene01.rb, etc.: Fixed some bugs to support the 'n' and 'p' commands.
  • 2008-03-08
    • scene11.rb: Added.
  • 2008-03-02
    • scene10.rb: Added.
  • 2008-03-01
    • scene08.rb: Porting completed. This ruby version runs very slow due to the 64x64 grids for drawing the surface of water.
    • scene08.rb: Added some experimental codes to render with the Vertex Array function (available only if OpenGL version is 1.1 or higher). But all the codes are commented out because I can't see any significant improvement...
  • 2008-02-17
    • scene07.rb: Added.
    • scene07data.rb: The rewriting of
      "static GLuint datas[4000]=..."
      , found in the original version (scene07.h).
  • 2008-02-16
    • scene06.rb: Porting completed.
    • scene06ship.rb: contains the geometry information of the fighter ship, appears in the scene 6.
  • 2008-02-11
    • scene05.rb: Added.
  • 2008-02-05
    • scene01.rb: Added.
  • 2008-02-04
    • scene12.rb: Added.
    • texture.rb: Bug fix. Texture#load now checks RUBY_VERSION to change the way to get the character codes from String instances.
  • 2008-02-03
    • scene04.rb: Added.
    • Notice: Scenes NOT yet implemented: 1, 5, 6, 7, 8, 10, 11, 12.
  • 2008-01-31
    • scene03.rb: Porting completed.
    • scene03.rb: Note: The Ruby version introduces an another OpenGL display list that is never seen in the original C++ version ( @face_lines ). And glScalef(1.0, 1.0, raiser) is used to `uplift' the height map at the opening (see line 314). This rewriting eliminates the computation cost of vertex transformation, apparently a tough work for Ruby.
  • 2008-01-27
    • scene02.rb: Added. This is a pure Ruby implementation version. PAINFULLY slow.
  • 2008-01-26
    • Announce: First (and premature) release.
    • Notice: Scenes NOT yet implemented: 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12. orz.



X:\> ruby glxs.rb [options]
-s, --scene : Scene ID [1-12]
ex.) To begin the progmram from Scene 11 (closing credits),
X:\> ruby glxs.rb -s 11
X:\> ruby glxs.rb --scene=11

Keyboard Operation

  • 'q' or 'Esc' : quit the program.
  • 'a' : increment the step of time (@step += 1)
  • 'z' : decrement the step of time (@step -= 1)
  • 's' : suspend / resume
  • 'n' : next scene
  • 'p' : previous scene

My Apology...

Do not worry if you don't see any change on the screen. Just keep pressing the 'a' key to increase the time step (especially Scene 2 and 8).


Original Copyright Notice

GLExcess v1.0 Demo
Copyright (C) 2001-2003 Paolo Martella

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.