0

试图让 Stencil 在我的应用程序中工作。我使用 Sprites 将内容渲染到设备上。内容可以是电影、图片或文字。

我可以使用这些 Sprites 设置模板缓冲区,以便在以后的传递中使用模板来绘制其他正在渲染的 Sprites?

我什至无法通过设置 StencilFunction = Compare.Never 来印出任何 Sprite!我可能做错了什么?

我已经花了几乎一整天的时间查看与 MDX 中的 Stencils 相关的帖子,但就是无法正常工作。

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

编辑:好的..所以我想出了如何完成它。参考这篇帖子——http ://www.gamedev.net/community/forums/viewreply.asp?ID =1999276

但是现在精灵忽略了 alpha 值并渲染精灵不透明。类似于我们将 alpha blending 设置为 false 时得到的效果。有任何想法吗?

4

1 回答 1

0

所以,我终于想通了。这都与 Sprites 及其 Begin() 方法有关。

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

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

于 2010-09-17T12:26:15.627 回答