3

我一直在尝试结合几个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

4

1 回答 1

3

您可以通过从 0 到 1 的插值来拉伸整个表面的纹理:

vertices[x + y * terrainWidth].TextureCoordinate.X = x / (terrainWidth - 1.0);
vertices[x + y * terrainWidth].TextureCoordinate.Y = y / (terrainHeight - 1.0);
于 2013-02-13T17:05:08.057 回答