Cairo能否使用SDL_Texture作为渲染目标?

12
1个回答

28

我已经想出来了。流式传输SDL_Textures可以将原始像素以ARGB8888格式暴露出来,这是Cairo表面也可以处理的格式。Cairo API足够低级,只需要像素缓冲区和间距。

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);

多么方便啊。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接