在 XNA 中,如何在不使用内容管道的情况下从文件中加载纹理或网格?
5 回答
.FromFile 方法不适用于 xbox 或 zune。你有两个选择:
- 只需在 xbox 或 zune 上使用内容管道……(如果您关心它们),无论如何您都不能拥有用户提供的内容,因此仅使用内容管道也没关系。
- 编写代码来加载纹理(使用 .SetData),或者当然是解析模型文件并加载适当的顶点缓冲区等。
对于任何有兴趣从文件加载模型的人,请查看本教程:
这是一种仅在 windows 上加载纹理而不通过管道加载的方式,正如 Cory 上面所说的,所有内容必须在加载到 Xbox 和 Zune 之前进行编译。
Texture2D texture = Texture2D.FromFile(GraphicsDeviceManager.GraphicsDevice, @Location of your Texture Here.png);
我相信 Texture2D.FromFile(); 就是你要找的。
不过,看起来你不能用模型来做到这一点。
http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.texture2d.fromfile.aspx
如果您真的想Xna.Framework.Graphics.Model
在没有内容管道的情况下在 PC 上加载 Xna(例如,对于用户生成的内容),有一种方法。我使用 SlimDX 加载 X 文件,并避免解析代码、实例化模型的一些反射技巧(它是密封的并且有一个私有构造函数,因此不打算扩展或定制)。见这里:http ://contenttracker.codeplex.com/SourceControl/changeset/view/20704#346981