Text 使用模具缓冲区绘制文本

Text 使用模具缓冲区绘制文本,text,directx,slimdx,directx-10,stencil-buffer,Text,Directx,Slimdx,Directx 10,Stencil Buffer,我设置了模具缓冲区,这样只有部分屏幕会受到绘图调用的影响。具体来说,我想画一个小区域。它将成为一个用户界面,因此绘制的所有内容都将是某种2D精灵。使用精灵对象效果非常好。区域外的精灵将被切断。 但是,当我添加文本时,所有随后绘制的内容和文本本身都不会被切断。PIX显示一个新的DepthStencilState在调用draw text时设置为关闭模具缓冲区。文本由负责绘制其他精灵的同一精灵对象绘制 通过SlimDX.Direct3D10.Font.Draw方法执行绘图 有没有办法强制DirectX

我设置了模具缓冲区,这样只有部分屏幕会受到绘图调用的影响。具体来说,我想画一个小区域。它将成为一个用户界面,因此绘制的所有内容都将是某种2D精灵。使用精灵对象效果非常好。区域外的精灵将被切断。 但是,当我添加文本时,所有随后绘制的内容和文本本身都不会被切断。PIX显示一个新的DepthStencilState在调用draw text时设置为关闭模具缓冲区。文本由负责绘制其他精灵的同一精灵对象绘制

通过SlimDX.Direct3D10.Font.Draw方法执行绘图

有没有办法强制DirectX不更改状态对象?我使用SlimDX,但根据它的代码,它似乎并不对状态变化负责


Nico

如果您要切换到D3D11,您可能会对我一直致力于移植到SlimDX的字体渲染库感兴趣(以及过去几个月发布的DirectX工具包库中的一些其他部分)


它仍在开发中,因此没有任何保证,但您可以在这里找到它(SVN):

大概是因为它是directx10,您正在使用着色器绘制它,如果它使用效果框架,我相信您可以在效果中设置depthstencil状态。也许你正在使用的效果就是设置这个的原因,你必须查看效果文件而不是程序代码?嗯,这是可能的。但是,我直接使用Font类。所以我无法访问效果文件。但是绘制是通过Sprite对象执行的,我假设Font类使用与绘制简单Sprite相同的方法。所以我怀疑这是着色器本身的问题。讨论这种。。。不幸的是,我似乎得出结论,如果没有一些可怕的黑客攻击,你无法避免它会让美国陷入它想要的境地。谢谢你的评论。如果绘图文本根本不起作用,我会考虑使用自定义精灵引擎切换到DX11,因为文本是我在DX10中逗留的唯一原因。谢谢你的回答。与此同时,我已经开始开发自己的引擎。。。