Как изменить размер окна с помощью XNA

Я знаю, что этот вопрос уже задавался много раз. Однако все решения, которые я нашел после более чем часа поиска в Google, по сути одно и то же. Все говорят, что для того, чтобы изменить размер окна в XNA, вы просто добавляете следующие строки кода (или небольшое изменение этих строк кода )в свой метод Initiate ()в классе Game1:

    //A lot of people say that the ApplyChanges() call is not necessary,
    //and equally as many say that it is.
    graphics.IsFullScreen = false;
    graphics.PreferredBackBufferWidth = 800;
    graphics.PreferredBackBufferHeight = 600;
    graphics.ApplyChanges();

Это не работает для меня. Код компилируется и запускается, но абсолютно ничего не меняется. Я просматривал документацию по классам GraphicsDevice и GraphicsDeviceManager, но не смог найти никакой информации, указывающей на то, что мне нужно делать что-либо, кроме вышеперечисленного.

Я также совершенно уверен, что моей видеокарты достаточно (ATI HD 5870 ), хотя, похоже, запись в вики о совместимости видеокарт XNA какое-то время не обновлялась.

Я работаю в Windows 7 с указанной выше графической картой, Visual C #2010 Express и последней версией XNA.

Поэтому я просто надеюсь, что кто-то может помочь мне найти, где я ошибаюсь. Я опубликую весь свой класс Game1 (, я переименовал его в MainApp )ниже. Если кто-то хотел бы увидеть какие-либо другие классы, которые вызываются, спросите, и я опубликую их.

public class MainApp : Microsoft.Xna.Framework.Game
{
    GraphicsDeviceManager graphics;
    SpriteBatch spriteBatch;

    Player player;

    public MainApp()
    {
        graphics = new GraphicsDeviceManager(this);
        Content.RootDirectory = "Content";
    }

    protected override void Initialize()
    {
        player = new Player();

        //This does not do ANYTHING
        graphics.IsFullScreen = false;
        graphics.PreferredBackBufferWidth = 800;
        graphics.PreferredBackBufferHeight = 600;
        graphics.ApplyChanges();

        base.Initialize();
    }

    protected override void LoadContent()
    {
        spriteBatch = new SpriteBatch(GraphicsDevice);

        Vector2 playerPosition = new Vector2(GraphicsDevice.Viewport.TitleSafeArea.X,
                                             GraphicsDevice.Viewport.TitleSafeArea.Y
                                             + 2*(graphics.GraphicsDevice.Viewport.TitleSafeArea.Height / 3));
        player.Initialize(Content.Load<Texture2D>("basePlayerTexture"),
                          playerPosition);
    }

    protected override void UnloadContent()
    {
    }

    protected override void Update(GameTime gameTime)
    {
        if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            this.Exit();
       base.Update(gameTime);
    }

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

        player.Draw(spriteBatch);

        spriteBatch.End();

        base.Draw(gameTime);
    }
}

P.S. Это мой второй день с C #, поэтому, если это из-за действительно глупой ошибки, я извиняюсь за потраченное впустую ваше время.

12
задан Adam 1 July 2012 в 16:15
поделиться