我一直在尝试结合几个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到1进行插值来在整个表面上拉伸纹理:

vertices[x + y * terrainWidth].TextureCoordinate.X = x / (terrainWidth - 1.0);
vertices[x + y * terrainWidth].TextureCoordinate.Y = y / (terrainHeight - 1.0);

关于c# - xna纹理坐标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14858861/

10-11 11:08