ホームに戻る
 XNA(三角形を描く)

/*
*  XNA(三角形を描く)
*/

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;
    // エフェクト
    BasicEffect basicEffect = null;
    // 頂点データ
    VertexPositionColor[] vertices = null;

    // コンストラクタ
    public Game1()
    {
      graphics = new GraphicsDeviceManager(this);
      Content.RootDirectory = "Content";

      // タイトル
      this.Window.Title = "XNA Test";

      // 解像度
      this.graphics.PreferredBackBufferWidth = 1280;
      this.graphics.PreferredBackBufferHeight = 720;

      // フルスクリーンで起動
      //this.graphics.IsFullScreen = true;
    }

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

    // ゲームのロード(開始時に1回だけ呼ばれる)
    protected override void LoadContent()
    {
      spriteBatch = new SpriteBatch(GraphicsDevice);

      this.basicEffect = new BasicEffect(this.GraphicsDevice);
      this.basicEffect.VertexColorEnabled = true;

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

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

      // 頂点データを作成する
      this.vertices = new VertexPositionColor[3];

      this.vertices[0] = new VertexPositionColor(new Vector3(0.0f, 0.3f, 0.0f), Color.Red);
      this.vertices[1] = new VertexPositionColor(new Vector3(0.3f, -0.2f, 0.0f), Color.Blue);
      this.vertices[2] = new VertexPositionColor(new Vector3(-0.3f, -0.2f, 0.0f), Color.Green);
    }

    // ゲームのアンロード(終了時に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)
    {
      GraphicsDevice.Clear(Color.Black);

      // カリングの有効化
      this.GraphicsDevice.RasterizerState = RasterizerState.CullCounterClockwise;

      // 深度バッファの有効化
      this.GraphicsDevice.DepthStencilState = DepthStencilState.Default;

      // 描画するパスを取得
      EffectPass pass = this.basicEffect.CurrentTechnique.Passes[0];

      // パスの開始
      pass.Apply();

      // 三角形を描画する
      this.GraphicsDevice.DrawUserPrimitives(
        PrimitiveType.TriangleList,
        this.vertices,
        0,  // 0 番目の要素から
        1   // 1 個の三角形を描く
      );

      base.Draw(gameTime);
    }
  }
}

inserted by FC2 system