[plt-scheme] gl-config% - Double buffering

From: Jonathan Thann (tfnood at gmail.com)
Date: Fri Mar 16 20:14:16 EDT 2007

Hi,

I'm a french student, and i'm trying to make a SHMUP (Shoot Them Up) game !
My project is on a good way, but i still have a problem to activate an
OpenGL double buffer.

I tried many things with the online help of DrScheme and i don't know what's
wrong with my code...

I made a simple example to show you what my code looks like and to get some
help ^^
You can download it here (1,78 Ko) :
http://dl.free.fr/Knxy41PR/trying-gl.rar

Or see it here :

------------------------------------------------------------
(require (lib "sgl.ss" "sgl"))

(define MOUSEX 0)
(define MOUSEY 0)
(define REDX 0) ; Red square X position
(define REDY 0) ; ---------- Y --------
(define Dblack (make-object color% "black"))

(define background (make-object bitmap% "greySqr.jpg" 'jpeg #f)) ;
Background
(define blackSqr (make-object bitmap% "blackSqr.bmp" 'bmp #f)) ; 10*10
pixels full Black
(define redSqr (make-object bitmap% "redSqr.bmp" 'bmp #f))        ;
----------------- Red

(define glTest (new gl-config%)) ; Gl-config

(define-syntax while ; While
  (syntax-rules ()
    ((while test e1 e2 ...) (do ()
                              ((not test) (void))
                              e1 e2 ...))))

(define frame (new frame%
                   (label "GL TEST")
                   (min-width 300)
                   (min-height 300)
                   (stretchable-width #f)
                   (stretchable-height #f)))

(define vpanel (new vertical-panel%
                    (parent frame)
                    (alignment '(center center))))

(define my-canvas%
  (class canvas%
    (define/override (on-event evt)
      (case (send evt get-event-type)
        ((motion) (set! MOUSEX (send evt get-x))
                  (set! MOUSEY (send evt get-y)))))
    (super-new)))

(define canvas (new my-canvas%
                    (parent vpanel)
                    (style '(border))
                    (min-width 300)
                    (min-height 30)
                    (gl-config glTest) ; Gl-config
                    (paint-callback
                     (lambda (obj dc)
                       (send dc get-gl-context)
                       (send dc draw-bitmap
                             background
                             0
                             0
                             'solid
                             Dblack
                             #f)
                       (send dc draw-bitmap
                             blackSqr
                             (- MOUSEX 5)
                             (- MOUSEY 5)
                             'solid
                             Dblack
                             #f)
                       (send dc draw-bitmap
                             redSqr
                             REDX
                             REDY
                             'solid
                             Dblack
                             #f)
                       ))))

(define Refresh (thread (lambda()
                          (while #t
                            (sleep 0.01)
                            (set! REDX (+ REDX 1))
                            (set! REDY (+ REDY 1))
                            (send canvas refresh)))))

(send frame show #t)
------------------------------------------------------------

Thanks !
Jonathan.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20070317/889113c3/attachment.html>

Posted on the users mailing list.