0

我已经使用 XNA 有一段时间了,我真的很喜欢使用它的界面。现在我们正在尝试制作一个“战争迷雾”系统。我们正在制作 RTS,我们基本上是在试图掩盖地图。地图上的单位有影响力,并显示正在发生的事情。它们显示地图上的特定区域。以前我们使用基于磁贴的界面,但我们对外观并不满意。相反,我们决定在屏幕上绘制一个黑色蒙版,然后用 DrawUserPrimitives 显示一个透明的圆圈。问题来了:当我们在屏幕上画一个黑色蒙版,然后是透明的圆圈时,屏幕是全黑的。颠倒顺序也不会改变任何事情。我们还尝试了我们能找到的每一个 SpriteBatch BlendState。

我们目前的方法:现在,我们在屏幕上绘制一个全黑的纹理,然后绘制一个透明的圆圈。结果是完全黑屏。

我们期望的结果:画圆将显示屏幕的一部分,但保持其余部分不可见。我们将能够绘制多个圆,所有圆都有自己的半径,它们可以彼此靠近而不会造成问题。

基本上,我们试图绘制一个黑色蒙版,但显示屏幕的一部分。我们不能只制作圆形纹理并使边缘透明,因为我们试图使圆形的中心透明。我们不能使中心透明,因为这样当两个这样的纹理彼此靠近时,它们的边界就会出现。我将如何制作面具,然后展示它的各个部分?

问候

战神

4

1 回答 1

1

您可以将图形正常渲染到一个渲染目标,然后在另一个渲染目标的黑色背景上将可见区域绘制为白色,然后使用Min BlendFunction.

或者,仅使用一个渲染目标,正常绘制图形,然后清除 alpha 通道(通过在整个屏幕上绘制一个矩形,ColorWriteChannels = Alpha 和 alpha 混合因子均为 0),然后仅使用 ColorWriteChannels = Alpha 绘制可见区域。

于 2013-03-21T20:17:37.203 回答