无法让模板工作

时间:2010-09-17 02:08:00

标签: direct3d managed-directx stencil-buffer

试图让Stencil在我的应用中运行。我使用Sprites将内容呈现给设备。内容可以是电影,图片或文字。

我可以使用这些Sprite设置模板缓冲区,可以在以后的过程中使用它来模板化其他正在渲染的Sprite吗?

我甚至无法通过设置StencilFunction = Compare.Never来模板化任何精灵!我可能做错了什么?

我已经花了差不多一整天的时间查看与MDX中的Stencils相关的帖子,但却无法让它发挥作用。

更多的搜索让我得到了一种技术,其中我们绘制要添加到模板缓冲区的形状的轮廓。在我的情况下,这真的需要吗?我只是想使用Sprite,并将它们添加到模板缓冲区以模板化其他Sprite。

编辑:好的..所以我想出了如何完成它。提到这篇文章 - http://www.gamedev.net/community/forums/viewreply.asp?ID=1999276

但是现在精灵忽略了alpha值并且渲染精灵不透明。类似于alpha混合设置为false时的效果。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

所以,我终于明白了。这一切都与Sprites及其Begin()方法有关。

Sprite.Begin()将修改RenderState并禁用模板。我们可以通过设置SpriteFlags.DoNotModifyRenderState标志来阻止它,但是在绘制精灵时不支持alpha混合。

我现在所做的只是调用Sprite.Begin()而不设置SpriteFlags.DoNotModifyRenderState标志。在调用Sprite.Draw()之前,在设备上启用了模板。