I am currently using sgl to draw to a window, and using the screenshot progrm to convert the picture to a .png file.
Unfortunately, this seems to limut the png to screen size, and I need more pixels than that for my application.
So my guess is that I need to create an sgl-compatible opengl environment that draws to bitmap instead of a window, and then use the tools available to write that bitmap out as a .png file.
Trouble is, I don't know how to get a bitmap out of sgl.
Here's the function I use to create the window and call a function called drawer to draw into it.
(define (environ drawer) #;(printf "in environ\n") (define my-canvas% (class* canvas% () (inherit with-gl-context swap-gl-buffers) (define/override (on-paint) ; When is on-paint caled? (printf "on-paint ~s~n" (count)) (with-gl-context (lambda () #;(printf "call drawer~n") (drawer) #;(printf "returned from drawer~n") (swap-gl-buffers) ) ) ) (define/override (on-size width height) ; Is this what is called when resizing the window with a mouse? (with-gl-context (lambda () (resize width height) ) ) ) (super-instantiate () (style '(gl))) ; What is this? ) ) #;(printf "before win~n") (define win (new frame% (label "OpenGl Test") (min-width 600) (min-height 600))) #;(printf "before my-canvas~n") (define gl (new my-canvas% (parent win))) #;(printf "before show~n") (send win show #t) ; presumably this runs the on-paint method. ; But why does it get called three times? #;(printf "out-environ~n") )
Presumably I need to set up a canvas% or a drawing context differently.
And, of course make a bitmap of the right size. Documentation suggests there are different kinds of bitmaps, and I'm not sure either which to use.