Graphics 在顶点缓冲区上平铺纹理?(Windows Phone 7/XNA)

Graphics 在顶点缓冲区上平铺纹理?(Windows Phone 7/XNA),graphics,windows-phone-7,xna,textures,Graphics,Windows Phone 7,Xna,Textures,我正在创建基于顶点的平面几何体,目的是为2D侧滚式游戏创建2D地形 到目前为止,我可以创建顶点缓冲区的罚款和绘制任何三角形的屏幕上我想要的。然而,我有一个问题与纹理。如何使用瓷砖对三角形进行纹理处理(如果可能的话)。我正在使用BasicFect类 在所有顶点上设置UV数据,使纹理在所有顶点上无缝平铺n次,好的算法是什么 我目前的想法是获取最左边和最右边的顶点(以及最上面和最下面的顶点),并基于此导出整个几何体的尺寸,然后遍历每个三角形并设置其顶点的UV(基于三角形的宽度/高度)设置一个值,该值将

我正在创建基于顶点的平面几何体,目的是为2D侧滚式游戏创建2D地形

到目前为止,我可以创建顶点缓冲区的罚款和绘制任何三角形的屏幕上我想要的。然而,我有一个问题与纹理。如何使用瓷砖对三角形进行纹理处理(如果可能的话)。我正在使用BasicFect类

在所有顶点上设置UV数据,使纹理在所有顶点上无缝平铺n次,好的算法是什么

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


这看起来有点复杂,有一个巨大的后退,瓷砖的大小必须大于最大三角形面的大小,但这是我能想到的唯一方法。我试过用谷歌搜索一个解决方案,或者至少有人用我的方式做了同样的事情,但什么也没想到。

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

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

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

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

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

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