Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XNA-栅格覆盖太突出_C#_3d_Xna - Fatal编程技术网

C# XNA-栅格覆盖太突出

C# XNA-栅格覆盖太突出,c#,3d,xna,C#,3d,Xna,我正在尝试为我的“地形”创建栅格覆盖 目前,我正在使用线列表创建我当前拥有的轴网线 然而,为了停止z纵深战斗,我不得不将深度设置为1 正如您在第一张图片中看到的,网格线与摄影机的距离越远,其突出程度就越低。然而,从我试图做的事情来看,我的台词非常突出 离网格线越远,如何降低网格线的突出度 预期结果: 实际结果 只是一个想法。您可能想要尝试的是简单地更改栅格线的alpha值,以减少它们远离摄影机的距离。通过这样做,您应该看到正方形的颜色而不是线。我不确定这看起来是否像你想要的,但你至少应该看到灰

我正在尝试为我的“地形”创建栅格覆盖

目前,我正在使用线列表创建我当前拥有的轴网线

然而,为了停止z纵深战斗,我不得不将深度设置为1

正如您在第一张图片中看到的,网格线与摄影机的距离越远,其突出程度就越低。然而,从我试图做的事情来看,我的台词非常突出

离网格线越远,如何降低网格线的突出度

预期结果:

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

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

Color gridColor = Color.White * AlphaValue;
也可以使用基于浮点的


我认为简单的方法是使用像素着色器,但是如果你不需要着色器,我认为解决方案是在屏幕空间中实现这一点

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

我会将每一条线的垂直投影到屏幕空间(2D坐标),然后我就有了一条2D线

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

然后根据高度计算alpha

  • 1:高度==屏幕高度
  • 0:高度<天际线高度
  • 也许需要这样才能将这条线一分为二,第一部分是可见的,第二部分是完全隐藏的

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


    刚刚注意到第二张图片具有更多的抗锯齿功能。可能会对情况有所帮助<代码>图形。首选多重采样=真
    图形。ApplyChanges()
    这有助于使图片更清晰,但它使距离完全变红,因此有助于解决另一个问题,谢谢:)我不擅长这些3D东西,很高兴我能帮上一点忙:)我也是,摸索着。哈,是不是有一个方程式,可以根据距离的不同来适应α的变化?或者我应该只是玩弄一下itNvm只是用毕达哥拉斯的方法来找出差异,并且做了1/差异,效果很好。谢谢非常好,欢迎光临。我很高兴这对你有用。快乐编码。
    public Color(float r, float g, float b, float a)