我一直在努力结合几个riemers教程来制作纹理和点亮的地形。我几乎在那里,但我无法正确应用纹理。我相信问题出在SetUpVertices()中,并设置了纹理坐标。我知道目前代码读取它们都被设置为(0,0)并且我需要它以便将它们设置为纹理的角落但我似乎无法正确获取代码。那里的任何人都可以提供协助吗?
private void SetUpVertices()
{
vertices = new VertexPositionNormalTexture[terrainWidth * terrainHeight];
for (int x = 0; x < terrainWidth; x++)
{
for (int y = 0; y < terrainHeight; y++)
{
vertices[x + y * terrainWidth].Position = new Vector3(x, -y, heightData[x, y]);
vertices[x + y * terrainWidth].TextureCoordinate.X = 0;
vertices[x + y * terrainWidth].TextureCoordinate.Y = 0;
}
}
}
我已将Game1.cs的完整代码添加到此贴身http://pastebin.com/REd8QDZA
答案 0 :(得分:3)
您可以通过从0到1进行插值来拉伸曲面:
vertices[x + y * terrainWidth].TextureCoordinate.X = x / (terrainWidth - 1.0);
vertices[x + y * terrainWidth].TextureCoordinate.Y = y / (terrainHeight - 1.0);