]> git.jsancho.org Git - gacela.git/commitdiff
(no commit message)
authorjsancho <devnull@localhost>
Wed, 17 Aug 2011 15:53:02 +0000 (15:53 +0000)
committerjsancho <devnull@localhost>
Wed, 17 Aug 2011 15:53:02 +0000 (15:53 +0000)
games/asteroids/Asteroid.png
games/asteroids/Ship1.png
src/gacela_SDL.c
src/gacela_draw.scm

index c6fdf24cfdb47b52ec3e64c5bff7ecc2b931b5db..71bbc21059a564c0ce81e1217c1ebbf1b5048efc 100644 (file)
Binary files a/games/asteroids/Asteroid.png and b/games/asteroids/Asteroid.png differ
index b385753f96592466ab57582c2b0e8a7cf70826d1..d4579404c846dcd0a459fb8b9662c90589e057be 100644 (file)
Binary files a/games/asteroids/Ship1.png and b/games/asteroids/Ship1.png differ
index f7f4151be78b2b5d4b4b3ef59adb18cf6bb0458a..ba567b52434c3aa802153b600414e28bb22a579f 100644 (file)
@@ -199,7 +199,27 @@ gacela_SDL_GetTicks (void)
 SCM
 gacela_SDL_DisplayFormat (SCM surface)
 {
-  return scm_from_int ((int)SDL_DisplayFormat (get_surface_address (surface)));
+  SDL_Surface *new = SDL_DisplayFormat (get_surface_address (surface));
+
+  if (new) {
+    return make_surface (scm_from_locale_string (get_surface_filename (surface)), new);
+  }
+  else {
+    return SCM_BOOL_F;
+  }
+}
+
+SCM
+gacela_SDL_DisplayFormatAlpha (SCM surface)
+{
+  SDL_Surface *new = SDL_DisplayFormatAlpha (get_surface_address (surface));
+
+  if (new) {
+    return make_surface (scm_from_locale_string (get_surface_filename (surface)), new);
+  }
+  else {
+    return SCM_BOOL_F;
+  }
 }
 
 SCM
@@ -483,6 +503,7 @@ SDL_register_functions (void* data)
   scm_c_define_gsubr ("SDL_Delay", 1, 0, 0, gacela_SDL_Delay);
   scm_c_define_gsubr ("SDL_GetTicks", 0, 0, 0, gacela_SDL_GetTicks);
   scm_c_define_gsubr ("SDL_DisplayFormat", 1, 0, 0, gacela_SDL_DisplayFormat);
+  scm_c_define_gsubr ("SDL_DisplayFormatAlpha", 1, 0, 0, gacela_SDL_DisplayFormatAlpha);
   scm_c_define_gsubr ("SDL_MapRGB", 4, 0, 0, gacela_SDL_MapRGB);
   scm_c_define_gsubr ("SDL_SetColorKey", 3, 0, 0, gacela_SDL_SetColorKey);
   scm_c_define_gsubr ("SDL_SetAlpha", 3, 0, 0, gacela_SDL_SetAlpha);
index 5fbc92e6f65e2c7f6e2da579861f97da276b56fa..5290dc490e5a661af069ee78d208b02417ed3342 100644 (file)
   (cond ((3d-mode?) (glVertex3f x y z))
        (else (glVertex2f x y))))
 
-(define (load-image-for-texture filename)
+(define (load-image filename)
   (init-sdl)
   (let ((image (IMG_Load filename)))
     (cond (image
-          (SDL_SetAlpha image 0 0)
+          (SDL_DisplayFormatAlpha image)))))
+  
+(define (load-image-for-texture filename)
+  (init-sdl)
+  (let ((image (load-image filename)))
+    (cond (image
           (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_RGB GL_RGBA)
-                               (if (= (surface-format-BytesPerPixel image) 3) GL_BGR GL_BGRA)))
+                               (if (= (surface-format-BytesPerPixel image) 3) GL_BGR GL_BGRA)
+                               (if (= (surface-format-BytesPerPixel image) 3) GL_RGB GL_RGBA)))
                 (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))
+            (glTexImage2D GL_TEXTURE_2D 0 4 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)