That's right—Gosu's drawing process is kind of different to what a lot of people seem to be used to.
Whenever you call one of the draw methods, what is actually happening behind the scenes is Gosu creates a DrawOp object that holds, references to, say, the current transformation stack, the image and whatever else you provided. This DrawOp object is inserted into what is essentially a priority queue, sorted by Z order.
After your Window#draw
method returns, or whenever you call gl { … }
, the DrawOp queue is flushed. This is when the actual drawing is done: each item is popped off the queue—starting at the back and working forward—transformations are applied and the image is drawn to the screen.
So no, nothing is actually drawn to the screen during your draw method. :)