如何纹理一个圆柱体在XNA4与多个纹理



基本上,我试图覆盖一个老虎机卷轴(白色圆柱体模型),在外部周围有多个均匀间隔的纹理。该程序将仅在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.GetDataTexture2D.SetData将纹理合并为单个。这样会更有效率,但真的不值得这么麻烦。除非你创造了某种疯狂的老虎机粒子系统。

相关内容

  • 没有找到相关文章