XNA - 网格覆盖太突出了

时间:2013-07-31 02:32:42

标签: c# 3d xna

我正在尝试为我的"地形"。

创建网格叠加层

目前我正在使用一个行列表来创建我目前拥有的网格线。

然而,为了阻止z深度战斗,我必须将depthBais设置为1.

正如您在第一张照片中看到的那样,网格线与相机之间的距离越远越不明显。然而,根据我的尝试,我的线条非常突出。

如何在更远的地方减少网格线的突出性?

期望的结果: Desired Result

实际结果 Actual Result

2 个答案:

答案 0 :(得分:0)

只是一个想法。您可能想要尝试的是简单地更改网格线的Alpha值,以减少它们从相机中拉出的距离。通过这样做,您应该看到正方形的颜色而不是线条。我不确定这是否会像你想要的那样,但你至少应该看到灰色和白色而不是红色。

如果您不知道,可以使用以下代码轻松修改具有浮动Alpha透明度的XNA颜色。

Color gridColor = Color.White * AlphaValue;

或者您可以使用基于浮动的color constructor

public Color(float r, float g, float b, float a)

答案 1 :(得分:0)

我认为简单的方法是使用像素着色器,但如果您不想使用着色器,我认为该解决方案适用于屏幕空间。

如果您有一个线列表,则每条线在3D中都有两个顶点。

我会将线的每个顶点投影到屏幕空间(2D坐标),然后我有一条2D线。

现在是剪切线开始和结束在屏幕边缘或其边界内的时间。

然后根据高度计算alpha。

  1. 1:height ==屏幕高度
  2. 0:高度<天际线高度
  3. 可能需要将线分为两部分,第一部分是可见的,第二部分是完全隐藏的。

    然后使用2D相机设置绘制线条或将顶点取消投影到3D。

    enter image description here