下面这行代码有时会在我的.NET XNA程序中出错。XNA中的InvalidOperationException异常
VertexBuffer v = new VertexBuffer(GraphicsDevice, typeof(VertexPositionColorTexture), 4, BufferUsage.None);
时引发的例外是出现InvalidOperationException,它告诉我说:
"The current vertex declaration does not include all the elements
required by the current vertex shader."
我使用BasicEffect作为我的着色器。现在,我改变了我输出的顶点缓冲区中的格式,但是它们立即输出。我没有一次绑定多个缓冲区。他们只需马上用原始功能输出。对于我的各种格式(3我认为),有些没有纹理(VertexPositionColor),有些没有颜色(VertexPositionTexture)等。我也调整TexturesEnabled,VertexColorEnabled,等我走。我还呼吁各应用EffectPass的(只有一个通行证;因为计数是1)
effect.CurrentTechnique.Passes.First<EffectPass>().Apply();
这行给出了第一个之前完成。
现在它出现错误,我准备在屏幕上绘制一个TriangleStrip精灵。在这种情况下,我使用VertexColoring,TextureEnabled,Texture被设置为我想要输出的那个(调试这个值表明它的加载正常)。 LightingEnabled是false。
让我也注意到这是Windows Phone 7项目。
XNA for ?? Xbox,Zune,PC? – 2010-09-29 15:52:08
Windows Phone 7.对不起! – Kyle 2010-09-29 15:53:27
创建VertexBuffer时,这是一个奇怪的错误。当前的VertexShader在创建时不应该被引用。你的代码的上下文有点不清楚。您是否在Draw调用期间不创建VertexBuffer对象? – Empyrean 2010-09-29 17:09:13