مواد اولیه اثر

صفحه به روز شده :
تاریخ ایجاد صفحه :

خلاصه

پارامترهای مربوط به بخش مادی BasicEffect را دستکاری کنید تا ببینید مدل چگونه به نظر می رسد.

محیط عملیاتی

پیش نیازها

نسخه های XNA پشتیبانی شده
  • 4.0
پلتفرم های پشتیبانی شده
  • ویندوز (XP SP2 یا بالاتر، ویستا، 7)
  • ایکس باکس 360
  • ویندوز فون 7
ویندوز مورد نیاز Vertex Shader نسخه 2.0
ویندوز مورد نیاز Pixel Shader نسخه 2.0

محیط عملیاتی

بستر
  • ویندوز 7
  • ایکس باکس 360
  • ویندوز فون 7

نحوه کار با نمونه

صفحه
کلید کار می کندXbox 360 کنترلر
پارامترهایی را که می خواهید تغییر دهید انتخاب کنید ↑、↓ 2019 01:00:00:00:00:00:00:00:00:00:00: دکمه چپ -
تغییر پارامترها ←、→ چوب چپ ←، → ←→ کشیدن -

ماده

تاثیر اساسی چیست؟

در XNA، اگر می خواهید چند ضلعی های سه بعد را نمایش دهید، باید یک برنامه سایه بان بنویسید تا انها را بکشید و تصمیم بگیرید که چگونه انها را بکشید. برای انجام این کار، یک فایل اثر جداگانه ایجاد کنید، یک برنامه بنویسید، ان را به عنوان یک کلاس اثر (Effect) بخوانید و برنامه سایه بان را اجرا کنید.

با این حال، موارد زیادی وجود دارد که شما نیازی به یک اثر نقاشی خاص ندارید و حتی در چنین مواردی، یک اثر ضروری است، بنابراین به طرز شگفت انگیزی دست و پا گیر است که اجرای یک برنامه سایه بان را به خود زحمت دهید.

بنابراین، پارامترهای اساسی مانند مواد و چراغ ها به عنوان خواص از قبل اماده می شوند تا جلوه ها به راحتی "BasicEffect" اداره شوند. این بسیار اسان است زیرا شما نیازی به ایجاد یک فایل اثر ندارید، می توانید ان را به سادگی با ایجاد یک نمونه از کلاس اداره کنید.

حتی اگر داده های مدل را از محتوا بارگذاری کنید، BasicEffect به طور پیش فرض تنظیم می شود، بنابراین شما حتی نیازی به ایجاد یک نمونه ندارید.

مواد

مواد عمدتا به ویژگی های مواد یک ماده اشاره دارد و برای مشخص کردن رنگ، درجه بازتاب و قدرت ماده استفاده می شود. از انجا که بیان مستقل ان در برنامه های سایه بان امکان پذیر شده است، تعریف یک ماده می تواند بدون ثابت شدن معنای خشن داشته باشد، اما BasicEffect دارای پارامترهای زیر است:

آلفا کدورت. مقدار 1.0 نشان دهنده کدورت است و مقدار 0.0 نشان دهنده شفافیت کامل است.
پخشcolor رنگ جوهر شیء که باید نمایش داده شود. نمایش رنگ ها در RGB. سایه مواد بسته به وضعیت نور منعکس می شود.
Emissivecolor رنگ ساطع شده از شیء که باید نمایش داده شود. نمایش رنگ ها در RGB. از انجا که رنگی است که نور خود را منتشر می کند، رنگ بدون اینکه تحت تاثیر نور قرار گیرد، اضافه می شود.
اسپکلارcolor رنگ انعکاس شیء که باید نمایش داده شود. نمایش رنگ ها در RGB. بسته به جهت و دیدگاه نور، مواد به نظر می رسد منعکس می شود.
SpecularPower شدت انعکاس شیء که باید نمایش داده شود. هرچه ارزش بالاتر باشد، منطقه کوچکتر منعکس می شود.

تصویر تغییر مواد

تصویر زیر مقادیر مختلف مواد را نشان می دهد.

حالت اولیه

این حالت بلافاصله پس از بارگذاری داده های مدل نمونه است.

初期状態

آلفا 1
پخش (قرمز) 0.8
منتشر (سبز) 0.8
پخش (ابی) 0
Emissive ( قرمز ) 0
Emissive (سبز) 0
Emissive (ابی) 0
اسپکولار (قرمز) 0
اسپکولار (سبز) 0
اسپکولار (ابی) 0
SpecularPower 5

تغییر تاری (الفا)

این زمانی است که شما opacity را تغییر می دهید. رنگ ابی پس زمینه کمی قابل مشاهده است.

不透明度(Alpha)変更

آلفا 0.31
پخش (قرمز) 0.8
منتشر (سبز) 0.8
پخش (ابی) 0
Emissive ( قرمز ) 0
Emissive (سبز) 0
Emissive (ابی) 0
اسپکولار (قرمز) 0
اسپکولار (سبز) 0
اسپکولار (ابی) 0
SpecularPower 5

تغییرات پراکنده

رنگ ماده تغییر می کند تا ان را ابی کند.

Diffuse 変更

آلفا 1
پخش (قرمز) 0.05
منتشر (سبز) 0.71
پخش (ابی) 1
Emissive ( قرمز ) 0
Emissive (سبز) 0
Emissive (ابی) 0
اسپکولار (قرمز) 0
اسپکولار (سبز) 0
اسپکولار (ابی) 0
SpecularPower 5

تغییرات قابل انتقال

عناصر قرمز و ابی Emissive حداکثر می شوند. صرف نظر از وضعیت نور، حداقل حالت بنفش حفظ می شود.

Emissive 変更

آلفا 1
پخش (قرمز) 0.8
منتشر (سبز) 0.8
پخش (ابی) 0
Emissive ( قرمز ) 1
Emissive (سبز) 0
Emissive (ابی) 1
اسپکولار (قرمز) 0
اسپکولار (سبز) 0
اسپکولار (ابی) 0
SpecularPower 5

تغییرات اسپکلار

با تنظیم Specular، مواد بازتابنده به نظر می رسد.

Specular 変更

آلفا 1
پخش (قرمز) 0.8
منتشر (سبز) 0.8
پخش (ابی) 0
Emissive ( قرمز ) 0
Emissive (سبز) 0
Emissive (ابی) 0
اسپکولار (قرمز) 1
اسپکولار (سبز) 1
اسپکولار (ابی) 1
SpecularPower 5

اصلاح SpecularPower

تغییر SpecularPower دامنه سطح بازتابنده را تغییر می دهد.

SpecularPower 変更

آلفا 1
پخش (قرمز) 0.8
منتشر (سبز) 0.8
پخش (ابی) 0
Emissive ( قرمز ) 0
Emissive (سبز) 0
Emissive (ابی) 0
اسپکولار (قرمز) 1
اسپکولار (سبز) 1
اسپکولار (ابی) 1
SpecularPower 20

زمینه

این زمینه دارای اطلاعات مادی برای تنظیم به BasicEffect است. علاوه بر این، پارامترهایی برای انتخاب منوها دارد، اما از انجا که فقط یک پارامتر برای عملیات است، جزئیات را حذف خواهم کرد.

/// <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;

بازیابی مواد از مدل

ارزش مواد تعیین شده در مدل به عنوان مقدار اولیه بازیابی می شود. در این نمونه، کد بر اساس این فرض نوشته شده است که تنها یک مجموعه اثر در مدل وجود دارد.

// ライトとビュー、プロジェクションはあらかじめ設定しておく
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;
    }
}

تنظیم مواد

نمونه یک مقدار را به اثر پایه مدل تعیین می کند. برای "DiffuseColor"، "EmissiveColor" و "SpecularColor"، در یک Vector3 تنظیم شده است، نه در یک ساختار رنگی. عناصر قرمز را برای X، سبز برای Y و ابی را برای Z با مقادیر 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;
    }
}

در نمونه، کدی مانند کد عملیات مواد و نمایش رشته مقادیر وجود دارد، اما قطعاتی وجود دارد که به طور مستقیم به BasicMaterial مرتبط نیستند، بنابراین من توضیح را حذف خواهم کرد. شما می توانید نمونه را دانلود کنید یا کد کامل را بررسی کنید.

BasicEffect.Alpha اموال

می شود و تعیین کدورت. مشخص کردن مقدار در محدوده 0.0 ~ 1.0. شناور دریافت، تنظیم

BasicEffect.DiffuseColor اموال

رنگ را می گیرد و تنظیم می کند. X قرمز است، Y سبز است، Z ابی است و هر مقدار در محدوده 0.0 ~ 1.0 است. وکتور ۳ دریافت، تنظیم

BasicEffect.EmissiveColor اموال

رنگ را می گیرد و تنظیم می کند. X قرمز است، Y سبز است، Z ابی است و هر مقدار در محدوده 0.0 ~ 1.0 است. وکتور ۳ دریافت، تنظیم

BasicEffect.SpecularColor اموال

می شود و تنظیم رنگ منعکس شده است. X قرمز است، Y سبز است، Z ابی است و هر مقدار در محدوده 0.0 ~ 1.0 است. وکتور ۳ دریافت، تنظیم

BasicEffect.SpecularPower اموال

می گیرد و شدت انعکاس را تنظیم می کند. مقدار به عنوان 0.0 ~ مشخص شده است. شناور دریافت، تنظیم

همه کدها

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);
        }
    }
}