2010-09-29 64 views
0

下面这行代码有时会在我的.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项目。

+0

XNA for ?? Xbox,Zune,PC? – 2010-09-29 15:52:08

+0

Windows Phone 7.对不起! – Kyle 2010-09-29 15:53:27

+0

创建VertexBuffer时,这是一个奇怪的错误。当前的VertexShader在创建时不应该被引用。你的代码的上下文有点不清楚。您是否在Draw调用期间不创建VertexBuffer对象? – Empyrean 2010-09-29 17:09:13

回答

0

修正了它。

抛出的异常实际上并不是因为我在这个实际的渲染调用中做了什么,而是事先引起的。在之前的渲染调用中,我将VertexColorEnabled设置为true时渲染了其他内容,但应该为false。

由于某种原因,直到那一刻它才出现,这让人难以理解。

相关问题