ホームに戻る
 XNA(テクスチャ)

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

/*
*  XNA(テクスチャ)
*/

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;
    // エフェクト
    BasicEffect basicEffect = null;
    // 頂点バッファ
    VertexBuffer vertexBuffer = null;
    // テクスチャ
    Texture2D texture = 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.TextureEnabled = 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.vertexBuffer = new VertexBuffer(this.GraphicsDevice,
        typeof(VertexPositionTexture), 4, BufferUsage.None);

      // 頂点データを作成する
      VertexPositionTexture[] vertices = new VertexPositionTexture[4];

      vertices[0] = new VertexPositionTexture(
        new Vector3(-0.2f, 0.2f, 0.0f),
        new Vector2(0.0f, 0.0f));
      vertices[1] = new VertexPositionTexture(
        new Vector3(0.2f, 0.2f, 0.0f),
        new Vector2(1.0f, 0.0f));
      vertices[2] = new VertexPositionTexture(
        new Vector3(-0.2f, -0.2f, 0.0f),
        new Vector2(0.0f, 1.0f));
      vertices[3] = new VertexPositionTexture(
        new Vector3(0.2f, -0.2f, 0.0f),
        new Vector2(1.0f, 1.0f));

      // 頂点データを頂点バッファに書き込む
      this.vertexBuffer.SetData(vertices);

      // テクスチャーの読み込み
      this.texture = this.Content.Load<Texture2D>("Texture");

      GraphicsDevice.SamplerStates[0] = new SamplerState()
      {
        Filter = TextureFilter.Point // Linear or Point
      };

      // エフェクトにテクスチャーをセットする
      this.basicEffect.Texture = this.texture;
    }

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

      // アルファブレンドを有効
      this.GraphicsDevice.BlendState = BlendState.AlphaBlend;

      // 頂点バッファをセット
      this.GraphicsDevice.SetVertexBuffer(this.vertexBuffer);

      EffectPass pass = this.basicEffect.CurrentTechnique.Passes[0];

      pass.Apply();

      // 描画する
      this.GraphicsDevice.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);

      base.Draw(gameTime);
    }
  }
}

inserted by FC2 system