以下行有时会在我的.NET XNA程序中出错。
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作为我的着色器。现在,我确实更改了I输出的顶点缓冲区中的格式,但它们会立即输出。我不是一次绑定多个缓冲区。它们只是立即输出原始函数。对于我的各种格式(3我认为),有些没有纹理(VertexPositionColor),有些没有颜色(VertexPositionTexture)等等。我也调整了TexturesEnabled,VertexColorEnabled等等。我也在每个EffectPass上调用Apply(只有一个pass;因为计数是1)
effect.CurrentTechnique.Passes.First<EffectPass>().Apply();
该行在第一行之前完成。
现在,我正准备将TriangleStrip精灵绘制到屏幕上,这是错误的。在这种情况下,我使用VertexColoring,TextureEnabled,将Texture设置为我想要输出的那个(调试此值表明其加载正常)。 LightingEnabled是假的。
我还要注意,这是针对Windows Phone 7项目的。
答案 0 :(得分:0)
修正了它。
抛出的异常实际上并不是由于我在这个实际的渲染调用中所做的事情,而是先前的。在之前的渲染调用中,我将VertexColorEnabled设置为true时渲染了其他内容,当它应该为false时。
出于某种原因,直到那时它才出现,这让人难以理解。