BasicEffect-materiaalit

Sivu päivitetty :
Sivun luontipäivämäärä :

yhteenveto

Käsittele BasicEffectin materiaaliosaan liittyviä parametreja nähdäksesi, miltä malli näyttää.

Toimintaympäristö

Edellytykset

Tuetut XNA-versiot
  • 4.0
Tuetut alustat
  • Windows (XP SP2 tai uudempi, Vista, 7)
  • Xbox 360
  • Windows Phone 7
Windowsin vaatima Vertex Shader -versio 2.0
Windowsin vaatima Pixel Shader -versio 2.0

Toimintaympäristö

lava
  • Windows 7
  • Xbox 360
  • Windows Phone 7

Kuinka työskennellä näytteen kanssa

Toimii näppäimistöXbox 360 -ohjainhiiren kosketus
Valitse muutettavat parametrit ↑、↓ Vasen sauva ↑, ↓ Vasen painike -
Parametrien muuttaminen ←、→ Vasen sauva ←, → ←→ Vedä -

aine

Mikä on BasicEffect?

XNA: ssa, jos haluat näyttää 3D-monikulmioita, sinun on kirjoitettava varjostinohjelma piirtääksesi ne ja päättääksesi, miten ne piirretään. Voit tehdä tämän luomalla erillisen tehostetiedoston, kirjoittamalla ohjelman, lukemalla sen tehosteluokkana (vaikutus) ja suorittamalla varjostinohjelman.

On kuitenkin monia tapauksia, joissa et tarvitse erityistä piirustustehostetta, ja jopa tällaisissa tapauksissa tehoste on välttämätön, joten varjostinohjelman toteuttaminen on yllättävän hankalaa.

Siksi perusparametrit, kuten materiaalit ja valot, valmistellaan ominaisuuksina etukäteen, jotta tehosteita voidaan helposti käsitellä "BasicEffect". Se on erittäin helppoa, koska sinun ei tarvitse luoda tehostetiedostoa, voit käsitellä sitä yksinkertaisesti luomalla luokan esiintymän.

Vaikka lataat mallitiedot sisällöstä, BasicEffect on oletusarvoisesti asetettu, joten sinun ei tarvitse edes luoda esiintymää.

materiaali

Materiaali viittaa pääasiassa aineen materiaalin ominaisuuksiin, ja sitä käytetään määrittämään aineen väri, heijastusaste ja lujuus. Koska se on tullut mahdolliseksi ilmaista itsenäisesti varjostinohjelmissa, materiaalin määritelmällä voi olla karkea merkitys ilman kiinteää, mutta BasicEffectillä on seuraavat parametrit:

Alfa Läpikuultamattomuus. Arvo 1,0 tarkoittaa peittävyyttä ja arvo 0,0 edustaa täydellistä läpinäkyvyyttä.
DiffuseColor Näytettävän objektin aineen väri. Esitä värit RGB-muodossa. Materiaalin varjostus heijastuu valon tilasta riippuen.
EmissiveColor Näytettävän objektin emittoitu väri. Esitä värit RGB-muodossa. Koska se on väri, joka säteilee omaa valoaan, väri lisätään ilman valon vaikutusta.
SpecularColor Näytettävän kohteen heijastuksen väri. Esitä värit RGB-muodossa. Valon suunnasta ja näkökulmasta riippuen materiaali näyttää heijastuvan.
SpecularPower Näytettävän kohteen heijastuksen voimakkuus. Mitä suurempi arvo, sitä pienempi alue heijastuu.

Kuva olennaisesta muutoksesta

Alla olevassa kuvassa näkyvät materiaalin eri arvot.

Alkutila

Tämä on tila heti mallimallin tietojen lataamisen jälkeen.

初期状態

Alfa 1
Diffuusi (punainen) 0.8
Diffuusi (vihreä) 0.8
diffuusi (sininen) 0
Emissiivinen (punainen) 0
Emissiivinen (vihreä) 0
Emissiivinen (sininen) 0
Specular (punainen) 0
Specular (vihreä) 0
Specular (sininen) 0
SpecularPower 5

Peittävyyden (alfa) muutos

Tällöin muutat peittävyyttä. Taustan sininen väri näkyy heikosti.

不透明度(Alpha)変更

Alfa 0.31
Diffuusi (punainen) 0.8
Diffuusi (vihreä) 0.8
diffuusi (sininen) 0
Emissiivinen (punainen) 0
Emissiivinen (vihreä) 0
Emissiivinen (sininen) 0
Specular (punainen) 0
Specular (vihreä) 0
Specular (sininen) 0
SpecularPower 5

Diffuusi muutokset

Aineen väri muuttuu sinertäväksi.

Diffuse 変更

Alfa 1
Diffuusi (punainen) 0.05
Diffuusi (vihreä) 0.71
diffuusi (sininen) 1
Emissiivinen (punainen) 0
Emissiivinen (vihreä) 0
Emissiivinen (sininen) 0
Specular (punainen) 0
Specular (vihreä) 0
Specular (sininen) 0
SpecularPower 5

Emissiiviset muutokset

Emissiivin punaiset ja siniset elementit maksimoidaan. Valon tilasta riippumatta ainakin violetti tila säilyy.

Emissive 変更

Alfa 1
Diffuusi (punainen) 0.8
Diffuusi (vihreä) 0.8
diffuusi (sininen) 0
Emissiivinen (punainen) 1
Emissiivinen (vihreä) 0
Emissiivinen (sininen) 1
Specular (punainen) 0
Specular (vihreä) 0
Specular (sininen) 0
SpecularPower 5

Spekulaariset muutokset

Kun asetat Specularin, materiaali näyttää heijastavalta.

Specular 変更

Alfa 1
Diffuusi (punainen) 0.8
Diffuusi (vihreä) 0.8
diffuusi (sininen) 0
Emissiivinen (punainen) 0
Emissiivinen (vihreä) 0
Emissiivinen (sininen) 0
Specular (punainen) 1
Specular (vihreä) 1
Specular (sininen) 1
SpecularPower 5

SpecularPower-modifikaatio

SpecularPowerin muuttaminen muuttaa heijastavan pinnan aluetta.

SpecularPower 変更

Alfa 1
Diffuusi (punainen) 0.8
Diffuusi (vihreä) 0.8
diffuusi (sininen) 0
Emissiivinen (punainen) 0
Emissiivinen (vihreä) 0
Emissiivinen (sininen) 0
Specular (punainen) 1
Specular (vihreä) 1
Specular (sininen) 1
SpecularPower 20

pelto

Kentässä on olennaisia tietoja, joiden arvoksi määritetään BasicEffect. Lisäksi siinä on parametrit valikoiden valitsemiseksi, mutta koska se on vain toimintaparametri, jätän yksityiskohdat pois.

/// <summary>
/// 不透明度
/// </summary>
private float alpha = 1.0f;

/// <summary>
/// ディフーズ
/// </summary>
private Vector3 diffuse = Vector3.One;

/// <summary>
/// エミッシブ
/// </summary>
private Vector3 emissive = Vector3.Zero;

/// <summary>
/// スペキュラー
/// </summary>
private Vector3 specular = Vector3.Zero;

/// <summary>
/// スペキュラーの強さ
/// </summary>
private float specularPower = 5.0f;

Mallin materiaalin hakeminen

Malliin asetetun materiaalin arvo alkuarvona noudetaan. Tässä esimerkissä koodi on kirjoitettu olettaen, että mallissa on vain yksi vaikutusjoukko.

// ライトとビュー、プロジェクションはあらかじめ設定しておく
foreach (ModelMesh mesh in this.model.Meshes)
{
    foreach (BasicEffect effect in mesh.Effects)
    {
        // デフォルトのライト適用
        effect.EnableDefaultLighting();

        // ビューマトリックスをあらかじめ設定 ((0, 0, 6) から原点を見る)
        effect.View = Matrix.CreateLookAt(
            new Vector3(0.0f, 0.0f, 6.0f),
            Vector3.Zero,
            Vector3.Up
        );

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

        // モデルのマテリアルを取得 //

        // アルファ
        this.alpha = effect.Alpha;

        // ディフーズ
        this.diffuse = effect.DiffuseColor;

        // エミッシブ
        this.emissive = effect.EmissiveColor;

        // スペキュラー
        this.specular = effect.SpecularColor;

        // スペキュラーの強さ
        this.specularPower = effect.SpecularPower;
    }
}

Materiaalin asettaminen

Esimerkki määrittää arvon mallin BasicEffectille. "DiffuseColor", "EmissiveColor" ja "SpecularColor", asetettu Vector3:een, ei värirakenteeseen. Määritä punaiset elementit X: lle, vihreä Y: lle ja sininen Z: lle arvoilla 0.0 ~ 1.0.

// マテリアルを設定
foreach (ModelMesh mesh in this.model.Meshes)
{
    foreach (BasicEffect effect in mesh.Effects)
    {
        // 不透明度
        effect.Alpha = this.alpha;

        // ディフーズ
        effect.DiffuseColor = this.diffuse;

        // エミッシブ
        effect.EmissiveColor = this.emissive;

        // スペキュラー
        effect.SpecularColor = this.specular;

        // スペキュラーの強さ
        effect.SpecularPower = this.specularPower;
    }
}

Näytteessä on koodi, kuten materiaalin toimintakoodi ja arvojen merkkijononäyttö, mutta on osia, jotka eivät liity suoraan BasicMaterialiin, joten jätän selityksen pois. Voit ladata näytteen tai tarkistaa koko koodin.

BasicEffect.Alpha ominaisuus

Saa ja asettaa peittävyyden. Määritä arvo välillä 0,0 ~ 1,0. kellua Hanki, aseta

BasicEffect.DiffuseColor ominaisuus

Hakee ja asettaa hajavärin. X on punainen, Y on vihreä, Z on sininen ja jokainen arvo on alueella 0.0 ~ 1.0. Vektori 3 Hanki, aseta

BasicEffect.EmissiveColor ominaisuus

Hanki ja asettaa emittoidun värin. X on punainen, Y on vihreä, Z on sininen ja jokainen arvo on alueella 0.0 ~ 1.0. Vektori 3 Hanki, aseta

BasicEffect.SpecularColor ominaisuus

Hakee ja asettaa heijastuneen värin. X on punainen, Y on vihreä, Z on sininen ja jokainen arvo on alueella 0.0 ~ 1.0. Vektori 3 Hanki, aseta

BasicEffect.SpecularPower ominaisuus

Saa ja asettaa heijastuksen voimakkuuden. Arvoksi määritetään 0,0~. kellua Hanki, aseta

Kaikki koodit

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;
#if WINDOWS_PHONE
using Microsoft.Xna.Framework.Input.Touch;
#endif

namespace BasicEffectMaterial
{
    /// <summary>
    /// ゲームメインクラス
    /// </summary>
    public class GameMain : Microsoft.Xna.Framework.Game
    {
        /// <summary>
        /// グラフィックデバイス管理クラス
        /// </summary>
        private GraphicsDeviceManager graphics = null;

        /// <summary>
        /// スプライトのバッチ化クラス
        /// </summary>
        private SpriteBatch spriteBatch = null;

        /// <summary>
        /// スプライトでテキストを描画するためのフォント
        /// </summary>
        private SpriteFont font = null;

        /// <summary>
        /// 直前のキーボード入力の状態
        /// </summary>
        private KeyboardState oldKeyboardState = new KeyboardState();

        /// <summary>
        /// 直前のマウスの状態
        /// </summary>
        private MouseState oldMouseState = new MouseState();

        /// <summary>
        /// 直前のゲームパッド入力の状態
        /// </summary>
        private GamePadState oldGamePadState = new GamePadState();

        /// <summary>
        /// モデル
        /// </summary>
        private Model model = null;

        /// <summary>
        /// 不透明度
        /// </summary>
        private float alpha = 1.0f;

        /// <summary>
        /// ディフーズ
        /// </summary>
        private Vector3 diffuse = Vector3.One;

        /// <summary>
        /// エミッシブ
        /// </summary>
        private Vector3 emissive = Vector3.Zero;

        /// <summary>
        /// スペキュラー
        /// </summary>
        private Vector3 specular = Vector3.Zero;

        /// <summary>
        /// スペキュラーの強さ
        /// </summary>
        private float specularPower = 5.0f;

        /// <summary>
        /// 選択しているメニューのインデックス
        /// </summary>
        private int selectedMenuIndex = 0;

        /// <summary>
        /// パラメータの最大数
        /// </summary>
        private static int MaxParameterCount = 11;

        /// <summary>
        /// メニューリスト
        /// </summary>
        private static string[] MenuNameList = new string[]
            {
                "Alpha",
                "Diffuse (Red)",
                "Diffuse (Green)",
                "Diffuse (Blue)",
                "Emissive (Red)",
                "Emissive (Green)",
                "Emissive (Blue)",
                "Specular (Red)",
                "Specular (Green)",
                "Specular (Blue)",
                "SpecularPower"
            };

        /// <summary>
        /// パラメータテキストリスト
        /// </summary>
        private string[] parameters = new string[MaxParameterCount];


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

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

#if WINDOWS_PHONE
            // Windows Phone のデフォルトのフレームレートは 30 FPS
            this.TargetElapsedTime = TimeSpan.FromTicks(333333);

            // バックバッファサイズの設定
            this.graphics.PreferredBackBufferWidth = 480;
            this.graphics.PreferredBackBufferHeight = 800;

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

            // ウインドウ上でマウスのポインタを表示するようにする
            this.IsMouseVisible = true;
        }

        /// <summary>
        /// ゲームが始まる前の初期化処理を行うメソッド
        /// グラフィック以外のデータの読み込み、コンポーネントの初期化を行う
        /// </summary>
        protected override void Initialize()
        {
            // コンポーネントの初期化などを行います
            base.Initialize();
        }

        /// <summary>
        /// ゲームが始まるときに一回だけ呼ばれ
        /// すべてのゲームコンテンツを読み込みます
        /// </summary>
        protected override void LoadContent()
        {
            // テクスチャーを描画するためのスプライトバッチクラスを作成します
            this.spriteBatch = new SpriteBatch(this.GraphicsDevice);

            // フォントをコンテンツパイプラインから読み込む
            this.font = this.Content.Load<SpriteFont>("Font");

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

            // ライトとビュー、プロジェクションはあらかじめ設定しておく
            foreach (ModelMesh mesh in this.model.Meshes)
            {
                foreach (BasicEffect effect in mesh.Effects)
                {
                    // デフォルトのライト適用
                    effect.EnableDefaultLighting();

                    // ビューマトリックスをあらかじめ設定 ((0, 0, 6) から原点を見る)
                    effect.View = Matrix.CreateLookAt(
                        new Vector3(0.0f, 0.0f, 6.0f),
                        Vector3.Zero,
                        Vector3.Up
                    );

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

                    // モデルのマテリアルを取得 //

                    // アルファ
                    this.alpha = effect.Alpha;

                    // ディフーズ
                    this.diffuse = effect.DiffuseColor;

                    // エミッシブ
                    this.emissive = effect.EmissiveColor;

                    // スペキュラー
                    this.specular = effect.SpecularColor;

                    // スペキュラーの強さ
                    this.specularPower = effect.SpecularPower;
                }
            }
        }

        /// <summary>
        /// ゲームが終了するときに一回だけ呼ばれ
        /// すべてのゲームコンテンツをアンロードします
        /// </summary>
        protected override void UnloadContent()
        {
            // TODO: ContentManager で管理されていないコンテンツを
            //       ここでアンロードしてください
        }

        /// <summary>
        /// 描画以外のデータ更新等の処理を行うメソッド
        /// 主に入力処理、衝突判定などの物理計算、オーディオの再生など
        /// </summary>
        /// <param name="gameTime">このメソッドが呼ばれたときのゲーム時間</param>
        protected override void Update(GameTime gameTime)
        {
            // 入力デバイスの状態取得
            KeyboardState keyboardState = Keyboard.GetState();
            MouseState mouseState = Mouse.GetState();
            GamePadState gamePadState = GamePad.GetState(PlayerIndex.One);

            // Xbox 360 コントローラ、Windows Phone の BACK ボタンを押したときに
            // ゲームを終了させます
            if (gamePadState.Buttons.Back == ButtonState.Pressed)
            {
                this.Exit();
            }

            
            // メニューの選択
            if ((keyboardState.IsKeyDown(Keys.Up) && this.oldKeyboardState.IsKeyUp(Keys.Up)) ||
                (gamePadState.ThumbSticks.Left.Y >= 0.5f &&
                    this.oldGamePadState.ThumbSticks.Left.Y < 0.5f))
            {
                // 選択メニューをひとつ上に移動
                this.selectedMenuIndex =
                    (this.selectedMenuIndex + this.parameters.Length - 1) % this.parameters.Length;
            }
            if ((keyboardState.IsKeyDown(Keys.Down) && this.oldKeyboardState.IsKeyUp(Keys.Down)) ||
                (gamePadState.ThumbSticks.Left.Y <= -0.5f &&
                    this.oldGamePadState.ThumbSticks.Left.Y > -0.5f) ||
                (this.oldMouseState.LeftButton == ButtonState.Pressed &&
                 mouseState.LeftButton == ButtonState.Released))
            {
                // 選択メニューをひとつ下に移動
                this.selectedMenuIndex =
                    (this.selectedMenuIndex + this.parameters.Length + 1) % this.parameters.Length;
            }

            // 各マテリアルの値を操作
            float moveValue = 0.0f;
            if (keyboardState.IsKeyDown(Keys.Left))
            {
                moveValue -= (float)gameTime.ElapsedGameTime.TotalSeconds;
            }
            if (keyboardState.IsKeyDown(Keys.Right))
            {
                moveValue += (float)gameTime.ElapsedGameTime.TotalSeconds;
            }
            if (mouseState.LeftButton == ButtonState.Pressed)
            {
                moveValue += (mouseState.X - this.oldMouseState.X) * 0.005f;
            }
            if (gamePadState.IsConnected)
            {
                moveValue += gamePadState.ThumbSticks.Left.X *
                             (float)gameTime.ElapsedGameTime.TotalSeconds;
            }

            switch (this.selectedMenuIndex)
            {
                case 0: // 不透明度
                    this.alpha = MathHelper.Clamp(this.alpha + moveValue,
                                                  0.0f,
                                                  1.0f);
                    break;
                case 1: // ディフューズ (赤)
                    this.diffuse.X = MathHelper.Clamp(this.diffuse.X + moveValue,
                                                      0.0f,
                                                      1.0f);
                    break;
                case 2: // ディフューズ (緑)
                    this.diffuse.Y = MathHelper.Clamp(this.diffuse.Y + moveValue,
                                                      0.0f,
                                                      1.0f);
                    break;
                case 3: // ディフューズ (青)
                    this.diffuse.Z = MathHelper.Clamp(this.diffuse.Z + moveValue,
                                                      0.0f,
                                                      1.0f);
                    break;
                case 4: // エミッシブ (赤)
                    this.emissive.X = MathHelper.Clamp(this.emissive.X + moveValue,
                                                       0.0f,
                                                       1.0f);
                    break;
                case 5: // エミッシブ (緑)
                    this.emissive.Y = MathHelper.Clamp(this.emissive.Y + moveValue,
                                                       0.0f,
                                                       1.0f);
                    break;
                case 6: // エミッシブ (青)
                    this.emissive.Z = MathHelper.Clamp(this.emissive.Z + moveValue,
                                                       0.0f,
                                                       1.0f);
                    break;
                case 7: // スペキュラー (赤)
                    this.specular.X = MathHelper.Clamp(this.specular.X + moveValue,
                                                       0.0f,
                                                       1.0f);
                    break;
                case 8: // スペキュラー (緑)
                    this.specular.Y = MathHelper.Clamp(this.specular.Y + moveValue,
                                                       0.0f,
                                                       1.0f);
                    break;
                case 9: // スペキュラー (青)
                    this.specular.Z = MathHelper.Clamp(this.specular.Z + moveValue,
                                                       0.0f,
                                                       1.0f);
                    break;
                case 10: // スペキュラーの強さ
                    moveValue *= 5.0f;
                    this.specularPower = MathHelper.Clamp(this.specularPower + moveValue,
                                                          0.0f,
                                                          100.0f);
                    break;
            }

            // マテリアルを設定
            foreach (ModelMesh mesh in this.model.Meshes)
            {
                foreach (BasicEffect effect in mesh.Effects)
                {
                    // 不透明度
                    effect.Alpha = this.alpha;

                    // ディフーズ
                    effect.DiffuseColor = this.diffuse;

                    // エミッシブ
                    effect.EmissiveColor = this.emissive;

                    // スペキュラー
                    effect.SpecularColor = this.specular;

                    // スペキュラーの強さ
                    effect.SpecularPower = this.specularPower;
                }
            }

            // 入力情報を記憶
            this.oldKeyboardState = keyboardState;
            this.oldMouseState = mouseState;
            this.oldGamePadState = gamePadState;

            // 登録された GameComponent を更新する
            base.Update(gameTime);
        }

        /// <summary>
        /// 描画処理を行うメソッド
        /// </summary>
        /// <param name="gameTime">このメソッドが呼ばれたときのゲーム時間</param>
        protected override void Draw(GameTime gameTime)
        {
            // 画面を指定した色でクリアします
            this.GraphicsDevice.Clear(Color.CornflowerBlue);

            // 深度バッファを有効にする
            this.GraphicsDevice.DepthStencilState = DepthStencilState.Default;

            // モデルを描画
            foreach (ModelMesh mesh in this.model.Meshes)
            {
                mesh.Draw();
            }

            // スプライトの描画準備
            this.spriteBatch.Begin();

            // 操作
            this.spriteBatch.DrawString(this.font,
                "Up, Down : Select Menu",
                new Vector2(20.0f, 20.0f), Color.White);
            this.spriteBatch.DrawString(this.font,
                "Left, right : Change Value",
                new Vector2(20.0f, 45.0f), Color.White);
            this.spriteBatch.DrawString(this.font,
                "MouseClick & Drag :",
                new Vector2(20.0f, 70.0f), Color.White);
            this.spriteBatch.DrawString(this.font,
                "    Select Menu & Change Value",
                new Vector2(20.0f, 95.0f), Color.White);

            // 各メニュー //
            for (int i = 0; i < MenuNameList.Length; i++)
            {
                this.spriteBatch.DrawString(this.font,
                    MenuNameList[i],
                    new Vector2(40.0f, 120.0f + i * 24.0f), Color.White);
            }

            // 各パラメータ //

            // 不透明度
            this.parameters[0] = this.alpha.ToString();

            // ディフューズ (赤)
            this.parameters[1] = this.diffuse.X.ToString();

            // ディフューズ (緑)
            this.parameters[2] = this.diffuse.Y.ToString();

            // ディフューズ (青)
            this.parameters[3] = this.diffuse.Z.ToString();

            // エミッシブ (赤)
            this.parameters[4] = this.emissive.X.ToString();

            // エミッシブ (緑)
            this.parameters[5] = this.emissive.Y.ToString();

            // エミッシブ (青)
            this.parameters[6] = this.emissive.Z.ToString();

            // スペキュラー (赤)
            this.parameters[7] = this.specular.X.ToString();

            // スペキュラー (緑)
            this.parameters[8] = this.specular.Y.ToString();

            // スペキュラー (青)
            this.parameters[9] = this.specular.Z.ToString();

            // スペキュラーの強さ
            this.parameters[10] = this.specularPower.ToString();

            for (int i = 0; i < this.parameters.Length; i++)
            {
                this.spriteBatch.DrawString(this.font,
                    this.parameters[i],
                    new Vector2(250.0f, 120.0f + i * 24.0f), Color.White);
            }

            // 選択インデックス
            this.spriteBatch.DrawString(this.font, "*",
                new Vector2(20.0f, 124.0f + this.selectedMenuIndex * 24.0f), Color.White);

            // スプライトの一括描画
            this.spriteBatch.End();

            // 登録された DrawableGameComponent を描画する
            base.Draw(gameTime);
        }
    }
}