从XNA 4.0中的编译效果初始化Effect类实例

时间:2012-10-11 02:41:33

标签: c# xna xna-4.0 xna-3.0

我想从已编译为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)

完成!

1 个答案:

答案 0 :(得分:0)

如果要加载已编译为Xnb的文件,则很容易。 这是一种可以使用FileStream

的方法
public static Effect FromStream(this Effect e, ContentManager content, FileStream stream)
{
    return content.Load<Effect>(stream.Name);
}

您可能需要进行一些文件路径解析,但它应该可以工作。

当然,您可以跳过整个扩展方法,并将代码直接放入Game.cs文件中。