ホームに戻る
 XNA(Xファイル)

あらかじめリソースに Model.x を読み込んでおく

/*
*  XNA(Xファイル)
*/

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace WindowsGame1
{
  // メインクラス
  public class Game1 : Microsoft.Xna.Framework.Game
  {
    // グラフィックデバイス管理
    GraphicsDeviceManager graphics;
    // スプライトのバッチ化クラス
    SpriteBatch spriteBatch;
    // モデル
    Model model = null;

    // コンストラクタ
    public Game1()
    {
      // グラフィックデバイス管理クラスの作成
      this.graphics = new GraphicsDeviceManager(this);

      // ゲームコンテンツのルートディレクトリを設定
      this.Content.RootDirectory = "Content";

      // フルスクリーン表示
      //this.graphics.IsFullScreen = true;
    }

    // 初期化
    protected override void Initialize()
    {
      base.Initialize();
    }

    // ゲームのロード(開始時に1回だけ呼ばれる)
    protected override void LoadContent()
    {
      // テクスチャーを描画するためのスプライトバッチクラスを作成します
      this.spriteBatch = new SpriteBatch(this.GraphicsDevice);

      // モデルを作成
      this.model = this.Content.Load<Model>("Model");

      // パラメータをあらかじめ設定しておく
      foreach(ModelMesh mesh in this.model.Meshes)
      {
        foreach(BasicEffect effect in mesh.Effects)
        {
          // デフォルトのライト適用
          effect.EnableDefaultLighting();

          // (0, 0, 1) から原点を見る
          effect.View = Matrix.CreateLookAt(
            new Vector3(0.0f, 0.0f, 1.0f),
            Vector3.Zero,
            Vector3.Up
          );

          // プロジェクションマトリックスをあらかじめ設定
          effect.Projection = Matrix.CreatePerspectiveFieldOfView(
            MathHelper.ToRadians(45.0f),
            (float)this.GraphicsDevice.Viewport.Width /
            (float)this.GraphicsDevice.Viewport.Height,
            0.5f,
            1.5f
          );
        }
      }
    }

    // ゲームのアンロード(終了時に1回だけ呼ばれる)
    protected override void UnloadContent()
    {
      // アンロードの処理
    }

    // 描画以外の更新(入力、衝突判定、サウンドなど)
    protected override void Update(GameTime gameTime)
    {
      if(Keyboard.GetState().IsKeyDown(Keys.Escape))
      {
        this.Exit();
        return;
      }

      base.Update(gameTime);
    }

    // 描画
    protected override void Draw(GameTime gameTime)
    {
      // 画面を指定した色でクリアします
      this.GraphicsDevice.Clear(Color.Black);

      // モデルを描画
      ModelMesh mesh = this.model.Meshes[0];

      mesh.Draw();

      base.Draw(gameTime);
    }
  }
}

inserted by FC2 system