代码之家  ›  专栏  ›  技术社区  ›  bsruth

为什么在使用D3DXFont::DrawText时,会将重复文本渲染到不同纹理的Z缓冲区上?

  •  0
  • bsruth  · 技术社区  · 15 年前

    我正在使用的应用程序在屏幕底部被划分为多个数据图和一个时间线。每个绘图(实际上是相互叠加的多个纹理)以及时间轴都渲染为单独的纹理。首先渲染时间线纹理,然后是从屏幕顶部到底部的每个打印纹理。我正在使用DXUT和DirectX9(2009年3月)。

    将时间文本添加到时间线纹理后,我注意到文本在每个数据图的标题栏中重复。这是显示部分的屏幕盖,它只显示一个绘图,但文本在每个打开的绘图上重复:

    alt text

    它似乎直接绑定到时间轴的渲染函数中调用的DrawText。我确实使用相对坐标作为传递给DrawText的rect,但是因为我已经将渲染目标设置为所需的纹理,所以它应该只影响当前纹理。并不是所有的纹理都是在之后渲染的。

    有没有人在使用D3DXFont时遇到过类似的问题?

    编辑

    1 回复  |  直到 8 年前
        1
  •  2
  •   gatorfax    15 年前

    Z缓冲区状态是持久的。

    例如

    SetDepthStencilSurface(X)
    SetRenderTarget(A)
    Draw()
    SetRenderTarget(B)
    Draw()
    

    两个绘图调用将使用相同的深度缓冲区。

    推荐文章
    Nacho  ·  DX12描述符堆管理
    7 年前