我正在尝试在我的(将会变成)三维地形上叠加网格。但是现在我使用顶点列表绘制一个折线列表。当前行列表有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);
答案 0 :(得分: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....
}