Browser 现代浏览器如何高效地进行平铺渲染(尤其是在Direct2D中)?

Browser 现代浏览器如何高效地进行平铺渲染(尤其是在Direct2D中)?,browser,webkit,tiles,gecko,direct2d,Browser,Webkit,Tiles,Gecko,Direct2d,这个问题与浏览器如何将整个页面渲染为平铺图像有关(而不是渲染页面内的图像)。我最感兴趣的是内存成本 据我所知,像Chrome这样的浏览器将布局整个页面,但会根据需要以小正方形平铺呈现部分页面。当用户滚动页面时,仅呈现不存在的分幅。平铺生成通常发生在后台线程中,但这个问题与线程无关 所以问题是,这种方法的总内存使用量是多少 假设屏幕为1024x768,平铺为64x64像素。因此,屏幕是16x12瓦片。此外,我假设每个磁贴是32位/像素,Direct2D是渲染平台,Direct2DSwapChain

这个问题与浏览器如何将整个页面渲染为平铺图像有关(而不是渲染页面内的图像)。我最感兴趣的是内存成本

据我所知,像Chrome这样的浏览器将布局整个页面,但会根据需要以小正方形平铺呈现部分页面。当用户滚动页面时,仅呈现不存在的分幅。平铺生成通常发生在后台线程中,但这个问题与线程无关

所以问题是,这种方法的总内存使用量是多少

假设屏幕为1024x768,平铺为64x64像素。因此,屏幕是16x12瓦片。此外,我假设每个磁贴是32位/像素,Direct2D是渲染平台,Direct2D
SwapChainPanel
用于性能

在给定的渲染周期内,可能只渲染总(16x12)分片的一小部分。然而,这个数字可能不止一个。所以

  • 在我看来,1024x768的划痕位图最方便地渲染当前无效的分片
  • 然后将有效部分复制到大小为64x64的实际平铺位图上,以便在下一步和将来的渲染周期中使用
  • 要渲染的最终位图由相应的分片组成,其中一些分片可能是由较早的渲染周期生成的,另一些可能是在此渲染周期中生成的。最后的位图也是1024x768 因此,除了磁贴之外,似乎还需要两个全屏大小(1024x768)的32bpp位图

    问题:

  • 浏览器实际上是每像素使用32位还是更低
  • 是否需要上面的步骤(3),或者是否有一种方法可以在没有最终位图的情况下直接渲染瓷砖
  • 是否有我可能错过的其他主内存分配(例如GPU)

  • 中间副本的数量是一个需要仔细思考的微妙问题,因此我非常希望得到准确的答案。请不要猜测。

    对于Chrome,我认为它不是渲染引擎的实现,而是前端浏览器。我使用CEF和Awesomium,两者都使用Chrome/Webkit/Blink。您只需在渲染数据的位置传递位图,因此前端必须决定最佳策略


    我认为没有人会实现这么小的瓷砖。我想它们大概是256倍宽(除非宽度特别大)的条纹。

    为什么要投反对票?这是正确的。我写的东西和OP混淆了浏览器实现中的“tile”和游戏中的tile。