0

我正在尝试在我的(将会变成的)3d 地形上覆盖一个网格。但是现在我正在使用一个顶点列表来绘制一个线表。当前行列表有 12 个顶点并得出此结果。我希望有人能指出我正确的方向以使电网正常工作?

编辑:顺便说一句,现在我需要 30 个顶点来获得一个网格?

当前顶点代码:

private void SetUpTileVertices()
    {

        tileVertices = new VertexPositionColor[terrainWidth * terrainHeight];
        for (int x = 0; x < terrainWidth; x++)
        {
            for (int y = 0; y < terrainHeight; y++)
            {
                tileVertices[x + y * terrainWidth].Position = new Vector3(x, heightData[x, y] + 0.01f, -y);
                tileVertices[x + y * terrainWidth].Color = Color.Red;
            }
        }
    }

绘画:

device.DrawUserPrimitives(PrimitiveType.LineList, tileVertices, 0, tileVertices.Length/2);

目前结果

4

1 回答 1

1

在绘制地形时...您可以计算地形像素在世界空间中的位置,并根据像素与网格线的距离来更改其颜色。

如果您的顶点在位置 (0,0), (1,0) , (2,0),.... (0,1), (1,1) , (2,1),....

您可以将顶点着色器的顶点位置传递给像素着色器......在像素着色器中......您可以执行类似的操作:

  float4 pixel_shader (in float4 color:COLOR0, 
                     in float2 tex: TEXCOORD0, 
                     in float3 pos:TEXCOORD1) : COLOR
  {
     // Don't draw the pixel if it's to close to grid lines, 
     // Instead you could tint pixel with another color .. 
     clip ( frac(pos.X + 0.01) - 0.02 ); 
     clip ( frac(pos.Z + 0.01) - 0.02 );  

     // Sampling texture and returning pixel color code....
   } 
于 2013-07-26T15:39:58.907 回答