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