在SDL2文档中提到:



背后的原因是什么?当您知道仍要覆盖它时,将屏幕填充为一种特定的颜色不是唯一的无用电话吗?

最佳答案

如果您要更新每个像素,则无需在每一帧中都调用SDL_RenderClear()。您甚至可以通过使用半透明像素来获得一些不错的效果(例如,在绘制另一帧之前先绘制一个黑色的半透明矩形来实现“运动模糊”)。

是的,如果这只是您自己的代码,这似乎没有用,但是一旦您的代码交由其他人掌握,您就永远不会知道。他们可能会使用不同的图像,透明的事物,并且很难弄清为什么屏幕上重复的一切。

那是鼓励清除屏幕的一个很好的理由。您不需要这样做。另外,值得注意的是,用颜色清除屏幕与通过绘制每个像素(而且速度更快)来填充颜色不同(因此,与将来可能出现的头痛相比),性能损失可忽略不计。

您可以检查每个平台的RenderClear代码,并查看它如何完成您所说的事情(用一种颜色填充屏幕),但是使用的是清除方法而不是绘画方法:

  • SW_RenderClear
  • PSP_RenderClear
  • GLES2_RenderClear
  • GLES_RenderClear
  • GL_RenderClear
  • D3D11_RenderClear
  • D3D_RenderClear

  • 您可以看到SDL_RenderClear唯一真正填满屏幕的实现是SW_RenderClear,但除此之外,清除屏幕没有任何危害,但也没有义务。没有它,SDL也可以正常工作。

    关于sdl - 即使打算覆盖每个像素,为什么还需要清除屏幕?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39667804/

    10-16 23:51