Added stuff
This commit is contained in:
		
							
								
								
									
										95
									
								
								loki_sample/alpha-example/alpha-sdl.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								loki_sample/alpha-example/alpha-sdl.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,95 @@ | ||||
| /* Example of alpha blending with SDL. */ | ||||
|  | ||||
| #include <SDL/SDL.h> | ||||
| #include <SDL/SDL_image.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
|  | ||||
| int main() | ||||
| { | ||||
| 	SDL_Surface *screen; | ||||
| 	SDL_Surface *background; | ||||
| 	SDL_Surface *image_with_alpha; | ||||
| 	SDL_Surface *image_without_alpha; | ||||
| 	SDL_Rect src, dest; | ||||
|  | ||||
| 	/* init sdl and check for erro */ | ||||
| 	if (SDL_Init(SDL_INIT_VIDEO) != 0) { | ||||
| 		printf("Unable to init SDL: %s\n", SDL_GetError()); | ||||
| 		return 1; | ||||
| 	} | ||||
|  | ||||
| 	atexit(SDL_Quit); | ||||
|  | ||||
| 	screen = SDL_SetVideoMode(800, 600, 16, 0); | ||||
| 	if (screen == NULL) { | ||||
| 		printf("Unable to set video mode: %s\n", SDL_GetError()); | ||||
| 		return 1; | ||||
| 	} | ||||
|  | ||||
| 	/* Load image file */ | ||||
| 	image_with_alpha = IMG_Load("with-alpha.png"); | ||||
| 	if (image_with_alpha == NULL) { | ||||
| 			printf("Unable to load image. \n"); | ||||
| 			return 1; | ||||
| 	} | ||||
| 	 | ||||
| 	image_without_alpha = IMG_Load("without-alpha.png"); | ||||
| 	if (image_without_alpha == NULL) { | ||||
| 		printf("Unable to load image\n"); | ||||
| 			return 1; | ||||
| 	} | ||||
|  | ||||
| 	background = IMG_Load("background.png"); | ||||
| 	if (background == NULL) { | ||||
| 		printf("Unable to load background.png.\n"); | ||||
| 		return 1; | ||||
| 	} | ||||
|  | ||||
| 	/* Draw background. */ | ||||
|  | ||||
| 	src.x = 0; | ||||
| 	src.y = 0; | ||||
| 	src.w = background->w; | ||||
| 	src.h = background->h; | ||||
| 	dest.x = 0; | ||||
| 	dest.y = 0; | ||||
| 	dest.w = background->w; | ||||
| 	dest.h = background->h; | ||||
| 	SDL_BlitSurface(background, &src, screen, &dest); | ||||
|  | ||||
| 	/* draw first image with alpha */ | ||||
|  | ||||
| 	SDL_SetAlpha(image_with_alpha, SDL_SRCALPHA, 0); | ||||
| 	src.w = image_with_alpha->w; | ||||
| 	src.h = image_with_alpha->h; | ||||
| 	dest.w = src.w; | ||||
| 	dest.h = src.h; | ||||
| 	dest.x = 40; | ||||
| 	dest.y = 50; | ||||
| 	SDL_BlitSurface(image_with_alpha, &src, screen, &dest); | ||||
|  | ||||
| 	/* Draw second image without alpha. Set to 50% transparence for entire surface. | ||||
| 	 */ | ||||
| 	SDL_SetAlpha(image_without_alpha, SDL_SRCALPHA, 128); | ||||
| 	src.w = image_without_alpha->w; | ||||
| 	src.h = image_without_alpha->h; | ||||
| 	dest.w = src.w; | ||||
| 	dest.h = src.h; | ||||
| 	dest.x = 180; | ||||
| 	dest.y = 50; | ||||
| 	SDL_BlitSurface(image_without_alpha, &src, screen, &dest); | ||||
|  | ||||
| 	/* Ask SDL to update entire screen */ | ||||
| 	SDL_UpdateRect(screen, 0, 0, 0, 0); | ||||
|  | ||||
| 	SDL_Delay(10000); | ||||
|  | ||||
| 	/* Free memory */ | ||||
| 	SDL_FreeSurface(background); | ||||
| 	SDL_FreeSurface(image_with_alpha); | ||||
| 	SDL_FreeSurface(image_without_alpha); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user