2014-06-19 14 views

risposta

17

L'ho capito. Lo streaming di SDL_Textures può esporre i pixel non elaborati nel formato ARGB8888, che è anche in grado di gestire le superfici Cairo. L'API Cairo è abbastanza bassa da richiedere solo il buffer e l'intonazione dei pixel.

SDL_Texture *texture = SDL_CreateTexture(renderer, 
    SDL_PIXELFORMAT_ARGB8888, 
    SDL_TEXTUREACCESS_STREAMING, 
    width, height); 

void *pixels; 
int pitch; 
SDL_LockTexture(texture, NULL, &pixels, &pitch); 
cairo_surface_t *cairo_surface = cairo_image_surface_create_for_data(
    pixels, 
    CAIRO_FORMAT_ARGB32, 
    width, height, pitch); 

paint(cairo_create(cairo_surface)); 

SDL_UnlockTexture(texture); 

Comodo.

Problemi correlati