【问题标题】:Tiling a texture over a vertex buffer? (Windows Phone 7/XNA)在顶点缓冲区上平铺纹理? (Windows 电话 7/XNA)
【发布时间】:2010-12-15 10:26:11
【问题描述】:

我正在创建基于平面顶点的几何图形,目的是为 2D 横向滚动类型游戏创建 2D 地形。

到目前为止,我可以很好地创建顶点缓冲区并在屏幕上绘制我想要的任何三角形。但是我有一个纹理问题。如何使用瓷砖纹理三角形(如果可能的话)。我正在使用 BasicEffect 类。

在所有顶点上设置 UV 数据以使纹理在所有顶点上无缝平铺 n 次是一种好的算法吗?

我目前的想法是获取最左边和最右边的顶点(以及最顶部、最底部),以此推导出整个几何图形的尺寸,然后遍历每个三角形并设置其顶点的 UV(基于三角形宽度/高度)到一个值,它将使用一些纹理,以便它将混合到下一个(即一个顶点 UV 将是 0.1、0.3,下一个将是 0.2、0.4)。

这似乎有点复杂,并且有一个巨大的缺点,瓷砖的尺寸必须大于最大三角形面的尺寸,但这是我能想到的唯一方法。我已经尝试在谷歌上搜索解决方案,或者至少是其他人以我的方式做了同样的事情,但什么也没找到。

【问题讨论】:

    标签: graphics windows-phone-7 xna textures


    【解决方案1】:

    是的,你必须找到一种算法来正确设置你的 tex 坐标......不幸的是,这是你的纹理和几何形状的函数,所以我不确定我们能提供多大的帮助.

    就技术而言,您应该能够将TextureAddressMode 设置为Wrap,GPU 将负责对纹理进行相应的采样,以根据 UV 对其进行平铺。

    graphics.GraphicsDevice.SamplerStates[0].AddressU = TextureAddressMode.Wrap;  
    graphics.GraphicsDevice.SamplerStates[0].AddressV = TextureAddressMode.Wrap;  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多