C++SDL如何撤消BlitSurface
C++ SDL How to undo a BlitSurface
我已经使用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。
相关文章:
- 在Qt中复制,剪切,粘贴,重命名,撤消和重做
- 如何撤消此代码上的 cin 重定向?
- 在Maya API中撤消操作
- Qt 撤消/重做和线程
- 撤消班次而不截断
- 在2048年游戏中撤消操作实施
- C 撤消命令 /反向以前的状态
- 与撤消历史的麻烦(Qundostack,Qundoview等)
- 在 QTextEdit 中撤消/重做
- C++向下转换以撤消功能覆盖
- 使用最小样板保存/加载+撤消/重做机制
- 撤消仪表convert依行动
- 使用 glm 撤消/防止围绕特定轴旋转
- 如何从 gdiplus 撤消拉绳
- 撤消后触发重做
- 如何撤消glTranslatef的效果
- 撤消按关键字隐藏的名称"using"。在孙子班不工作
- 撤消/重做的命令模式:何时不合并撤消命令
- 撤消/重做时释放内存时出现问题
- C++SDL如何撤消BlitSurface