OpenGL World is like world, but the rendering functions are in a GL context.
|(require (planet jaymccarthy/gl-world))|
|world/c : contract?|
|init : world/c|
|height : (integer-in 0 10000)|
|width : (integer-in 0 10000)|
|on-tick : (world/c . -> . world/c)|
|tick-rate : (integer-in 0 1000000000)|
|on-key : (world/c (is-a?/c key-event%) . -> . world/c)|
|draw-init : (-> void)|
|on-draw : (world/c . -> . void)|
|stop-when : (world/c . -> . boolean?)|
|stop-timer : (world/c . -> . boolean?)|
Creates a width x height window with an OpenGL canvas and calls draw-init in its context to initialize it. Next on-draw is called in the GL context with init to show the render the first scene. init becomes the current world.
starts a timer that rings every tick-rate milliseconds (when stop-timer returns false) and calls on-tick with the current world and expects a new world. When there is user input in the canvas, calls on-key with the key-event% and expects a new world. In either of these cases, if the returned world is not equal? to the current world then it becomes the current world and on-draw is called to redisplay the scene.
These events occur until stop-when returns #t on the current world.