(define-macro (progn-textures . code)
`(let ((result #f))
- (init-gacela)
+ (init-video-mode)
(glEnable GL_TEXTURE_2D)
(set! result (begin ,@code))
(glDisable GL_TEXTURE_2D)
(else (glVertex2f x y))))
(define (load-image-for-texture filename)
- (init-gacela)
+ (init-sdl)
(let ((image (IMG_Load filename)))
(cond (image
+ (SDL_SetAlpha image 0 0)
(let* ((width (surface-w image)) (height (surface-h image))
(power-2 (nearest-power-of-two (min width height)))
(resized-image #f))
(cond (image
(let ((width (surface-w image)) (height (surface-h image))
(byteorder (if (= SDL_BYTEORDER SDL_LIL_ENDIAN)
- (if (= (surface-format-BytesPerPixel image) 3) GL_BGR GL_BGRA)
- (if (= (surface-format-BytesPerPixel image) 3) GL_RGB GL_RGBA)))
+ (if (= (surface-format-BytesPerPixel image) 3) GL_RGB GL_RGBA)
+ (if (= (surface-format-BytesPerPixel image) 3) GL_BGR GL_BGRA)))
(texture (car (glGenTextures 1))))
(glBindTexture GL_TEXTURE_2D texture)
(glTexImage2D GL_TEXTURE_2D 0 3 width height 0 byteorder GL_UNSIGNED_BYTE (surface-pixels image))
(glTexParameteri GL_TEXTURE_2D GL_TEXTURE_MIN_FILTER min-filter)
(glTexParameteri GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER mag-filter)
+ (set-texture-size! texture real-w real-h)
texture))))))
(define* (draw-image filename #:optional (zoom 1))
(draw v1 v2 v3 v4))))
(define* (draw-rectangle width height #:key texture color)
- (draw-quad (list (- width) height 0)
- (list width height 0)
- (list width (- height) 0)
- (list (- width) (- height) 0)
- #:texture texture
- #:color color))
+ (let ((w (/ width 2)) (h (/ height 2)))
+ (draw-quad (list (- w) h 0)
+ (list w h 0)
+ (list w (- h) 0)
+ (list (- w) (- h) 0)
+ #:texture texture
+ #:color color)))
(define* (draw-square #:key (size 1) texture color)
(draw-rectangle size size #:texture texture #:color color))