我使用 SDL 显示图像:
SDL_BlitSurface(sprite, NULL, screen, NULL);
我的问题是:是否可以从窗口中删除图像?
一般来说,没有。SDL_BlitSurface()
覆盖目标表面的内容(子集),本质上与对像素数据数组的赋值相同。一种解决方案是每帧重绘整个屏幕,首先清除:
SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, r, g, b));
为了获得更好的性能,您可以跟踪屏幕上的哪些区域是“脏的”并且需要在每一帧重新绘制,并且只重新绘制这些区域。SDL 提供了一些功能来做到这一点(SDL_UpdateRect()
和SDL_UpdateRects()
),但除非渲染速度成为一个严重的问题,否则我不会打扰。大多数 SDL 应用程序似乎能够每秒处理 30-50 帧;除此之外,您还需要查看 OpenGL。