X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fvideo.scm;h=e183f13330f05713125651b2063ea9ff83fabf39;hb=995c7af364cfdc254e904a3b560e068339613534;hp=f9e37f15e8b730736bfe8938b25909e123b0e461;hpb=62f29c535971a4af5c4a957444a53eb6007b32e3;p=gacela.git diff --git a/src/video.scm b/src/video.scm index f9e37f1..e183f13 100644 --- a/src/video.scm +++ b/src/video.scm @@ -36,7 +36,8 @@ set-2d-mode set-3d-mode 3d-mode? - set-frames-per-second + get-frames-per-second + set-frames-per-second! init-frame-time get-frame-time delay-frame @@ -59,7 +60,11 @@ set-camera camera-look load-font - render-text)) + render-text) + #:export-syntax (glmatrix-block) + #:re-export (glPushMatrix + glPopMatrix)) + ;;; Screen @@ -67,7 +72,7 @@ (define screen #f) (define flags 0) -(define* (init-video width height bpp #:key (mode '2d) (title "")) +(define* (init-video width height bpp #:key (mode '2d) (title "") (fps 20)) (cond ((not screen) (SDL_Init SDL_INIT_VIDEO) (let ((info (SDL_GetVideoInfo))) @@ -77,6 +82,7 @@ (if (= (assoc-ref info 'blit_hw) 0) 0 SDL_HWACCEL))) (set! screen (SDL_SetVideoMode width height bpp flags)) (set-screen-title! title) + (set-frames-per-second! fps) (init-gl) (if (eq? mode '3d) (set-3d-mode) (set-2d-mode)))))) @@ -87,7 +93,7 @@ (surface-w screen)) (define (get-screen-bpp) - (surface-format-BytesPerPixel screen)) + (* (surface-format-BytesPerPixel screen) 8)) (define (set-screen-bpp! bpp) (cond (screen @@ -163,9 +169,14 @@ ;;; Frames per second (define time 0) +(define frames-per-second 20) (define time-per-frame 50) ;in ms -(define (set-frames-per-second fps) +(define (get-frames-per-second) + frames-per-second) + +(define (set-frames-per-second! fps) + (set! frames-per-second fps) (set! time-per-frame (/ 1000.0 fps))) (define (init-frame-time) @@ -355,6 +366,13 @@ (glLoadIdentity) (cond ((3d-mode?) (camera-look)))) +(define-macro (glmatrix-block . code) + `(let ((result #f)) + (glPushMatrix) + (set! result (begin ,@code)) + (glPopMatrix) + result)) + ;;; Lights