C++SDL如何撤消BlitSurface

C++ SDL How to undo a BlitSurface

本文关键字:撤消 BlitSurface 何撤消 C++SDL      更新时间:2023-10-16

我已经使用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。