Основной метод рисования blenddstate не распознан?

Я неплохо разбираюсь в программировании, однако я новичок в С# (xna), я следую учебному пособию по рисованию спрайта на экране, и метод blendstate не распознается при использовании, как показано ниже в методе рисования:

protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            // TODO: Add your drawing code here
            // Draw the sprite.
            spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend); 

//не распознает blendstate (подставляет закорючки под ним)

            spriteBatch.Draw(myTexture, spritePosition, Color.White);
            spriteBatch.End();

            base.Draw(gameTime);
        }

заранее спасибо, так как это определенно беспокоит меня.


person Jackson Curtis    schedule 19.08.2010    source источник


Ответы (1)


Моя первая мысль: что произойдет, если вы наведете указатель мыши на ошибку? Это должно дать вам подсказку с текстом, сообщающим вам, что такое фактическая ошибка.

Кроме того, если у вас нет using Microsoft.Xna.Framework.Graphics в начале исходного файла (но вы имеете файл Microsoft.Xna.Framework.Graphics.dll, на который ссылается проект, который вам также нужен), он будет также дать вам маленькое поле, чтобы щелкнуть, чтобы добавить это использование оператора (я полагаю, что сочетание клавиш, чтобы сделать его всплывающим, - это Ctrl-Shift-F10).

Также вы можете просто передать null вместо BlendState.AlphaBlend, так как это состояние наложения по умолчанию (см. документация).


Моя вторая мысль заключается в том, что вы используете руководство по XNA 4.0 со старой версией XNA. Ты? В этом сообщении в блоге объясняются различия в SpriteBatch.

person Andrew Russell    schedule 19.08.2010
comment
У меня есть код с использованием Microsoft.Xna.Framework.Graphics в верхней части моего кода, однако я не смог найти ничего, говорящего о том, что эта ссылка реализована. Как бы я это сделал? я щелкаю правой кнопкой мыши по ссылкам и выбираю новую ссылку, и я дважды щелкаю Microsoft.Xna.Framework, и это не помогает. Ошибка (когда я наводил указатель мыши на ошибку): Ошибка 1. Имя «Blendstate» не существует в текущем контексте, спасибо, и ps, когда я помещаю «BlendState.AlphaBlend» как «null», это дает мне эта ошибка: Ошибка 1 Нет перегрузки для метода «Начало» принимает аргументы «2» - person Jackson Curtis; 19.08.2010
comment
@Custard: я обновил свой ответ. Я думаю, что ваши версии XNA не совпадают. - person Andrew Russell; 20.08.2010
comment
@AndrewRussell Какая альтернатива Blendstate для xna 3.1? - person Rickard B.; 08.08.2014
comment
@RickardB Только для XNA 3.1 и более ранних версий: Для SpriteBatch вы просто предоставляете SpriteBlendMode для Begin, и он устанавливает все за вас. В противном случае GraphicsDevice.RenderState обеспечивает доступ к различным частям состояния смешивания через следующие свойства: AlphaBlendEnable, AlphaBlendOperation, SourceBlend, DestinationBlend, SeparateAlphaBlend (и, возможно, другие). (Рекомендуется, однако, обновиться до XNA 4.0, если это возможно. Объекты состояния действительно хороши.) - person Andrew Russell; 08.08.2014