SDL
Simple DirectMedia Layer
Instalação
Linux (Ubuntu)
sudo apt-get install libsdl11.2-dev
Exemplo
Para compilar : gcc ex1.c -o ex1 -Wall `sdl-config —cflags —libs`
#include <SDL.h> //usaremos funcoes da SDL #define SCREEN_W 640 //tamanho da janela que sera criada #define SCREEN_H 480 void put_pixel(SDL_Surface* surface, int x, int y, Uint8 r, Uint8 g, Uint8 b) { int offset = y * surface->w + x; Uint32 color = SDL_MapRGB(surface->format, r, g, b); if(surface->format->BytesPerPixel == 1) *( ((Uint8*)surface->pixels) + offset) = color; else if(surface->format->BytesPerPixel == 2) *( ((Uint16*)surface->pixels) + offset) = color; else *( ((Uint32*)surface->pixels) + offset) = color; } int cor = 0; int red = 255; int green = 255; int blue = 255; int main(int argc, char** argv) //funcao de entrada { SDL_Surface* screen; //superficie que representa a tela do computador SDL_Event event; //um evento enviado pela SDL int quit = 0; //devemos encerrar o programa? SDL_Init(SDL_INIT_VIDEO); //inicializar a SDL screen = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 16, SDL_SWSURFACE); //criar uma janela 640x480x16bits while(!quit) //rodar enquanto nao for para encerrar :) { while(SDL_PollEvent(&event)) //checar eventos { switch (event.type) { case SDL_MOUSEMOTION: //printf("Mouse foi movido de %d,%d para (%d,%d)\n", event.motion.xrel, event.motion.yrel, event.motion.x, event.motion.y); put_pixel(screen, event.motion.x, event.motion.y, red, green, blue); break; case SDL_MOUSEBUTTONDOWN: printf("botão %d do mouse pressionado em (%d,%d)\n",event.button.button, event.button.x, event.button.y); if(cor==0) { cor=1; red=0; green=255; blue=0; }else{ if(cor==1){ cor=2; red=0; green=0; blue=255; }else { cor=0; red=255; green=0; blue=0; } } break; case SDL_QUIT: exit(0); } } SDL_Flip(screen); //atualizar a tela } SDL_Quit(); //encerrar a SDL return 0; }
page revision: 2, last edited: 19 Jun 2008 15:15