基本上,我试图覆盖一个老虎机卷轴(白色圆柱体模型),在外部周围有多个均匀间隔的纹理。该程序将仅在Windows上运行,纹理将在运行时动态加载,而不是使用内容管道。(基于Windows的多屏幕设置与XNA从微软的例子)
我能在网上找到的大多数示例都是针对XNA3的,在这一点上对我来说似乎仍然是乱码。
所以我在寻找任何帮助有人可以提供的对象的游戏内纹理,如圆柱体与多个纹理的主题。
也许有一本好书可以适当地描述纹理在XNA(特别是4.0)中如何工作?
谢谢
您有几个选择。这取决于两件事:模型是否在运行时加载或生成,以及你的多个纹理是组合成一个还是保持独立。
如果你有美术技能或认识美工,可能最简单的方法是让他们用你想要的尽可能多的纹理(多种材料)对圆柱体进行纹理映射。你想要你的Model
有一个网格(ModelMesh
)和一个材料(ModelMeshPart
)每个纹理所需。这是假设圆柱体总是有固定数量的纹理!然后,要在运行时交换纹理,您将迭代ModelMesh.Effects
集合,将每个转换为BasicEffect
并设置它的Texture
属性。
如果你不能修改模型,你将不得不生成它。在AppHub网站上有一个例子:http://create.msdn.com/en-US/education/catalog/sample/primitives_3d。它可能不会生成纹理坐标,所以你需要添加它们。如果你想要每个圆柱体5个图像,你应该确保片段的数量是5的倍数,并且V坐标应该在环绕圆柱体的过程中从0到1.5倍。为了保持这种技术的纹理个性化,你需要在5块中绘制圆柱体,每次将GraphicsDevice.Textures[0]
设置为当前纹理。
使用这两种技术,可以在单个绘制调用中绘制圆柱体,但您需要使用Texture2D.GetData
和Texture2D.SetData
将纹理合并为单个。这样会更有效率,但真的不值得这么麻烦。除非你创造了某种疯狂的老虎机粒子系统。