使用Cairo可以渲染到SDL_Surface,但我的应用程序使用SDL_Renderer和SDL_Texture来利用2D加速渲染.
我目前正在创建一个SDL_Surface并将其复制到纹理中SDL_CreateTextureFromSurface(),但这个过程很麻烦且可能很慢(尽管它不是瓶颈.)是否有直接的方法来绘制SDL_Texture?
Vor*_*ico 20
我已经明白了.Streaming SDL_Textures可以以ARGB8888格式显示原始像素,这是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);
Run Code Online (Sandbox Code Playgroud)
多方便
| 归档时间: |
|
| 查看次数: |
2061 次 |
| 最近记录: |