gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:13:58 26 4
gpt4 key购买 nike

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

我的理解是,像 Chrome 这样的浏览器会布局整个页面,但会根据需要在小方块中呈现其中的部分。当用户滚动页面时,只会呈现不存在的图块。图块生成通常发生在后台线程中,但这个问题与线程无关。

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

让我们假设屏幕是 1024x768 并且图块是 64x64 像素。所以屏幕是 16x12 瓷砖。此外,我假设每个图块是每像素 32 位,Direct2D 是渲染平台,Direct2D SwapChainPanel用于性能。

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

  • 在我看来,1024x768 的临时位图最方便呈现当前无效的图块。
  • 然后将有效部分复制到大小为 64x64 的实际平铺位图上,以用于下一步和 future 的渲染周期。
  • 要渲染的最终位图是通过位块化适当的图块组成的,其中一些可能是由较早的渲染周期产生的,而另一些则是在这个渲染周期中产生的。这个最终位图也是 1024x768。

  • 因此,除了图块之外,似乎还需要两个全屏尺寸 (1024x768) 的 32bpp 位图。

    问题:
  • 浏览器实际上是否使用每像素 32 位,或者更低?
  • 是否需要上面的步骤(3),或者有没有办法在没有最终位图的情况下直接渲染图块?
  • 是否有任何我可能错过的额外主内存分配(例如 GPU)?

  • 中间副本的数量是一个需要仔细考虑的微妙之处,所以我真的很感激准确的答案。请不要猜测。

    最佳答案

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

    我认为没有人会实现那么小的瓷砖。我认为它们类似于 256 x 宽度(除非宽度特别大)条纹。

    关于browser - 现代浏览器如何有效地进行平铺渲染(尤其是在 Direct2D 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27583905/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com