我想从已经编译为 xnb 的文件加载效果。
我可以在 XNA 3.0 中使用它
Effect (GraphicsDevice, Stream, CompilerOptions, EffectPool)
但是我不知道如何在 XNA 4.0 中做到这一点,因为没有这样的构造函数。
任何帮助将不胜感激。
最后,我通过XNA 4.0中的新构造函数解决了这个问题:
public Effect(GraphicsDevice graphicsDevice, byte[] effectCode);
那是
Stream bumpStream = ... //get the file stream
byte[] buffer = new byte[bumpStream.Length];
bumpStream.Read(buffer, 0, buffer.Length);
myFx = new Effect(graphicsDevice, buffer)
做!
如果要加载已编译为 Xnb 的文件,那么这很容易。这是一个可以使用FileStream
的方法:
public static Effect FromStream(this Effect e, ContentManager content, FileStream stream)
{
return content.Load<Effect>(stream.Name);
}
您可能需要执行一些文件路径解析,但它应该可以工作。
当然,您可以跳过整个扩展方法,并将代码直接放入Game.cs
文件中。