如何在屏幕上发送基于Wic的渲染目标?

时间:2013-09-30 13:54:35

标签: ms-office reverse-engineering direct3d direct2d

我正在尝试了解Office 2013是如何将内容绘制到屏幕的部分。我的发现远远不够:

  1. Office正在使用CreateWicBitmapRenderTarget创建基于Wic的位图。
  2. 使用此渲染目标,Office使用各种绘图方法。它按预期使用BeginDraw / EndDraw包装这些调用。
  3. Office使用DrawGlyphRun方法在Wic位图上绘制文档的文本(即DrawGlyphRun的This指针是从CreateWicBitmapRenderTarget返回的那个)。
  4. 此时我很困惑Office如何继续。所以我的问题是:

    将基于Wic的渲染目标复制到屏幕的各种可能方法是什么?

    我很确定最后,Office正在使用交换链(可能在Windows 7上使用CreateSwapChain而在Windows 8上使用CreateSwapChainForHwnd)。我正在逐步完成各种“可疑”功能,例如CreateBitmapFromWicBitmapCreateBitmapFromDxgiSurface) - 但我不了解完整的API调用链。

    编辑(回答MooseBoys): 这不是将像素放在屏幕上的一般问题。像素已经在一个RenderTarget(使用CreateWicBitmapRenderTarget创建的渲染目标,然后使用BeginDraw / DrawGlyphRun / EndDraw绘制),我现在想要将这些像素移动到另一个RenderTarget(实际屏幕上的渲染目标)。 在GDC世界中,我会寻找类似BitBlt的东西,将像素从一个hdc移动到另一个hdc。我想知道D2D世界中的协议是什么。

0 个答案:

没有答案