【问题标题】:xna texture coordinatesxna 纹理坐标
【发布时间】:2013-02-14 01:14:15
【问题描述】:

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

【问题讨论】:

  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
  • 考虑到标签与帖子的内容相关,如果标题本身也要相关,标题是否不可避免地会包含它们?
  • 不,不是。请阅读该链接。如果标签与问题相关,则将它们放在标签区域中。如果它们与问题无关,请不要使用它们。
  • 我阅读了这篇文章,如果它能让事情变得更有效率,我肯定会在未来尝试按照你的建议去做,但我仍然不明白其中的原因。以这个实例为例,我应该将其表述为一个实际问题,但问题是“如何使用 c# 在 xna 中设置纹理坐标?”仍然包含所有标签。我如何在不使用它们的情况下问它。我不想开玩笑,只是好奇。
  • 与其说是不复制一些文本。更多的是不取一个好的标题,然后加上一些标签。如果你使用“C#”作为一个好的标题的一部分,那就继续吧。问题是当你有一个像“xna 纹理坐标”这样的标题,并在开头或结尾添加“C#”或“(C#)”时,我们就知道问题是关于 C# 的。 这就是标签的用途。

标签: c# xna coordinates textures


【解决方案1】:

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

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

【讨论】:

  • 我知道这会很简单,但我就是做错了。我已经坚持了好几天了!我爱你,:)
  • 我注意到,当我放大地形时,纹理会拉伸到整个地形。我希望实现的是添加到每个三角形的纹理。感谢您已经提供的帮助,但我可以麻烦您提出其他建议吗?
  • @luigivampa 您需要按照自己的意愿分配纹理,从 0 到 1。如果您希望它重复,只需执行 1。
  • 对不起里德,你失去了我(我是园丁而不是程序员!)。我知道 0,0 是左上角,1,1 是纹理的右下角,但我如何将其应用为代码?我已经尝试了几十种尝试正确分配坐标的变体,但通常它只是看起来很脏。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
  • 2012-05-04
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多