微電腦 - SHARP Zaurus SL-C860 - Debian - C/C++ - Framebuffer



main.c

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/fb.h>
#include <sys/ioctl.h>
#include <SDL.h>

int main(int argc, char** argv)
{
    uint32_t cnt = 0;
    SDL_Surface* screen = NULL;
    uint32_t col[] = { 0xf800, 0x7e0, 0x001f };
    int zero = 0, fd = open("/dev/fb0", O_RDWR);

    SDL_Init(SDL_INIT_VIDEO);
    screen = SDL_SetVideoMode(320, 240, 16, SDL_SWSURFACE | SDL_DOUBLEBUF);
    while (cnt < 300) {
        cnt += 1;
        SDL_FillRect(screen, &screen->clip_rect, col[cnt % 3]);
        SDL_Flip(screen);

        ioctl(fd, FBIO_WAITFORVSYNC, &zero);
    }
    SDL_Quit();
    close(fd);
    return 0;
}