Исключение InvalidOperationException в XNA - PullRequest
0 голосов
/ 29 сентября 2010

В следующей строке .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 в качестве шейдера. Теперь я изменяю форматы в буферах вершин, которые я выводю, но они выводятся сразу. Я не связываю несколько буферов одновременно. Они просто сразу выводятся с примитивными функциями. Для моих различных форматов (думаю, 3) у некоторых нет текстур (VertexPositionColor), у некоторых нет цветов (VertexPositionTexture) и т. Д. По мере продвижения я также настраиваю TexturesEnabled, VertexColorEnabled и т. Д. Я также вызываю Apply для каждого из EffectPass (есть только один проход; счет равен 1)

effect.CurrentTechnique.Passes.First<EffectPass>().Apply();

Эта строка сделана до первой заданной.

Сейчас происходит ошибка в месте, где я готовлюсь нарисовать спрайт TriangleStrip на экране. В этом случае я использую VertexColoring, TextureEnabled, для текстуры задано значение, которое я хочу вывести (отладка этого значения показывает, что он загружен нормально). LightingEnabled имеет значение false.

Позвольте мне также отметить, что это для проекта Windows Phone 7.

1 Ответ

0 голосов
/ 29 сентября 2010

Исправлено.

Исключение было вызвано не тем, что я делал в этом фактическом вызове рендеринга, а предыдущим.В предыдущем вызове рендеринга я рендерил что-то еще с VertexColorEnabled, установленным в значение true, когда оно должно было быть ложным.

По какой-то причине оно не возникло до этой точки, что затрудняло понимание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...