0

我正在尝试为我的“地形”创建一个网格叠加层。

目前我正在使用 linelist 来创建我目前拥有的网格线。

但是要停止 z-depth 战斗,我不得不将 depthBais 设置为 1。

正如您在第一张图片中看到的那样,网格线与相机的距离越远,它们就越不显眼。然而,从我试图做的事情来看,我的台词非常突出。

网格线越远,如何降低它们的显着性?

期望的结果: 期望的结果

实际结果 实际结果

4

2 回答 2

0

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

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

Color gridColor = Color.White * AlphaValue;

或者您可以使用基于浮点的颜色构造函数

public Color(float r, float g, float b, float a)
于 2013-07-31T04:53:11.593 回答
0

我认为最简单的方法是像素着色器,但如果你不想要着色器,我认为解决方案是在屏幕空间中工作。

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

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

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

然后根据高度计算 alpha。

  1. 1 : 高度 == 屏幕高度
  2. 0 : 高度 < 天际线高度

也许需要将线分成两部分,第一部分是可见的,第二部分是完全隐藏的。

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

在此处输入图像描述

于 2013-07-31T08:10:41.393 回答