为什么使用D3DXFont :: DrawText的时候重复文本所呈现到不同的纹理的Z缓冲区?
题
我已经绊倒了一会儿,如果有人之前已经遇到了这个问题,不知道。
我工作中的应用被分成多个数据图,并在屏幕的底部的单一的时间表。每个小区(实际上是多个纹理层叠在彼此的顶部上),以及在时间线呈现到一个单独的纹理。时间轴纹理从屏幕的底部的顶部第一渲染,随后每个情节纹理。我使用DXUT和DirectX9的(2009年3月)。
添加时间文本到时间轴纹理后,我注意到,文本是在每个数据图的标题栏重复。这里的显示器的一部分的一个撷取画面,它显示了只是一个单一的情节,但是重复的文本上的每个情节打开:
现在看来似乎是直接关系到DrawText的被称为在时间轴的渲染功能。我使用相对坐标的RECT传递给DrawText的,但因为我已经设置渲染目标所需的质地应该只影响当前的纹理。并不是每一个纹理渲染之后。
有没有人遇到类似这样使用D3DXFont什么问题?
修改:经过一些实验,它看起来像它有事情做与Z缓冲。通过添加D3DCLEAR_ZBUFFER到清晰的每个纹理表面,重复的文字消失了。虽然问题似乎绕过了现在,我还是好奇,为什么我的DrawText调用过程中被写入了一个完全独立的纹理Z缓存。
解决方案
在Z缓冲器状态是持久的。
例如,
SetDepthStencilSurface(X)
SetRenderTarget(A)
Draw()
SetRenderTarget(B)
Draw()
两个绘制调用将使用相同的深度缓冲器。
在DrawText的没有改变已设置的深度缓冲器。它假定你的意思是你做了什么。
不隶属于 StackOverflow