【问题标题】:Is the position of BeginDraw() (Direct2D) important when coding?BeginDraw() (Direct2D) 的位置在编码时重要吗?
【发布时间】:2020-06-11 14:04:40
【问题描述】:

我目前正在学习如何使用 Direct2D 创建应用程序,我想知道在调用“BeginDraw()”之后放置大量“非图形”代码是否重要。我不完全理解“BeginDraw()”实际上做了什么,所以我的问题主要是关于执行时间。它会减慢其他进程吗?在调用“EndDraw()”之前,它是否会“吃掉”CPU?

【问题讨论】:

  • @AlexF 这听起来像是一个答案。您可能想将其作为一个发布。
  • @AlexF 谢谢你的回答。如果你发布它,我会验证它(我认为这就是这个网站的运作方式?)

标签: c++ visual-c++ direct2d


【解决方案1】:

BeginDraw 内花费的时间段内,您不会获得额外费用。

调用它需要付出一定的代价,就像任何其他函数一样,因为它需要准备东西并处理状态。在这方面,BeginDraw 块少比多好。

但是由于块的范围更长,您不会获得成本。事实上,更早调用它甚至可能是有益的,因为它可以让 Direct2D 库有时间在需要时进行后台处理。可能只涉及获取内存。我希望这会产生微不足道的影响或没有影响,但如果这是唯一的变化,那么早点这样做会不会造成伤害。

在实践中,尽量使用尽可能少的块。并使用与立即绘制命令相反的任何可用的命令缓冲 API。 (抱歉这里缺少细节,我自己对 DirectDraw 不太熟悉,更像是一个 OpenGL/Vulkan 开发者)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2017-07-11
    相关资源
    最近更新 更多