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.
-- hendrik