1

我使用 SDL 显示图像:

SDL_BlitSurface(sprite, NULL, screen, NULL);

我的问题是:是否可以从窗口中删除图像?

4

1 回答 1

0

一般来说,没有。SDL_BlitSurface()覆盖目标表面的内容(子集),本质上与对像素数据数组的赋值相同。一种解决方案是每帧重绘整个屏幕,首先清除:

SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, r, g, b));

为了获得更好的性能,您可以跟踪屏幕上的哪些区域是“脏的”并且需要在每一帧重新绘制,并且只重新绘制这些区域。SDL 提供了一些功能来做到这一点(SDL_UpdateRect()SDL_UpdateRects()),但除非渲染速度成为一个严重的问题,否则我不会打扰。大多数 SDL 应用程序似乎能够每秒处理 30-50 帧;除此之外,您还需要查看 OpenGL。

于 2013-07-18T02:12:45.313 回答