我正在尝试为我的“地形”创建一个网格叠加层。
目前我正在使用 linelist 来创建我目前拥有的网格线。
但是要停止 z-depth 战斗,我不得不将 depthBais 设置为 1。
正如您在第一张图片中看到的那样,网格线与相机的距离越远,它们就越不显眼。然而,从我试图做的事情来看,我的台词非常突出。
网格线越远,如何降低它们的显着性?
期望的结果:
实际结果
只是一个想法。您可能想要尝试的方法是简单地更改网格线的 alpha 值,以减少它们远离相机的距离。通过这样做,您应该看到正方形的颜色而不是线条的颜色。我不确定这是否会像您想要的那样,但您至少应该看到灰色和白色而不是红色。
如果您不知道,您可以使用以下代码轻松修改具有浮动 alpha 透明度的 XNA 颜色。
Color gridColor = Color.White * AlphaValue;
或者您可以使用基于浮点的颜色构造函数。
public Color(float r, float g, float b, float a)
我认为最简单的方法是像素着色器,但如果你不想要着色器,我认为解决方案是在屏幕空间中工作。
如果您有一个线列表,则每条线都有两个 3D 顶点。
我会将线的每个顶点投影到屏幕空间(2D 坐标),然后我有一条 2D 线。
现在是在屏幕边缘或其边界内开始和结束线的时间了。
然后根据高度计算 alpha。
也许需要将线分成两部分,第一部分是可见的,第二部分是完全隐藏的。
然后使用 2D 相机设置绘制线或将顶点取消投影到 3D。