プラグイン: Graphics

プラグイン

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

Graphics

# TextureLoader

1. プロジェクトの作成
   メインメニューの「ファイル」→「新規作成」→「プロジェクト」を選んで、「Win32 コンソールアプリケーション」で 空のDLLのプロジェクトを作成します。
   次にプロジェクトのプロパティを開き、「構成プロパティ」→「C/C++」→「全般」にある「追加のインクルードディレクトリ」に Mix のインクルードファイルがあるディレクトリ(※)を指定します。
   ※ "Mix\Engine\Include\"

2. DLL エクスポートのソースファイルの作成
   プロジェクトに "main.cpp" を追加し、以下の関数を実装します。

   - Mix::Plugin::INFORMATION __stdcall GetInformation ( void )
     このプラグインの情報を取得する関数です。

   - Int32 __stdcall Load ( Mix::Plugin::IReader* pSrc, Mix::Plugin::Graphics::ITextureKit* pDst )
     テクスチャをロードする関数であり Mix::Plugin::Graphics::TEXTURE_PLUGIN_RESULT 列挙定数のいずれかを返す必要があります。
     - ソース ( pSrc )
       テクスチャの元になるデータになります。
       このソースからデータを読み取り、キットに設定、展開をします。
     - キット ( pDst )
       ソースから読み取ったデータをテクスチャにする直前の構成になります。
       キットは基本設定として、タイプ、フォーマット、サイズ、深度、ミップレベル、フラグがあります。
       これらは、以下のメソッドを使用して設定します。
       Mix::Plugin::Graphics::ITextureKit::SetType
       Mix::Plugin::Graphics::ITextureKit::SetFormat
       Mix::Plugin::Graphics::ITextureKit::SetSize
       Mix::Plugin::Graphics::ITextureKit::SetDepth
       Mix::Plugin::Graphics::ITextureKit::SetMipLevels
       Mix::Plugin::Graphics::ITextureKit::SetFlags
       また、タイプ、サイズ、深度、ミップレベル数、フラグによって、数、レイアウトが変化する、サブリソースというものがあります。
       サブリソースとは、メインイメージ、ミップマップイメージなどの部分的なリソースのことをいい、
       Mix::Plugin::Graphics::ITextureKit::AddSubResourceData メソッドを使用して追加します。
       サブリースのレイアウトを以下に提示します。
       - Type = PLANE Size = 128x128 MipLevels = 8
         プレーンテクスチャは MipLevels 分のサブリソースを必要とし、深度は無視されます。
         - MipLevel = 1 Size = 128x128
         - MipLevel = 2 Size = 64x64
         - MipLevel = 3 Size = 32x32
         - MipLevel = 4 Size = 16x16
         - MipLevel = 5 Size = 8x8
         - MipLevel = 6 Size = 4x4
         - MipLevel = 7 Size = 2x2
         - MipLevel = 8 Size = 1x1
       - Type = VOLUME Size = 64x64 MipLevels = 7 Depth ( Slice ) = 4
         ボリュームテクスチャは MipLevels 分のサブリソースを必要とします。
         また、Slice はミップレベルが上がるにつれて半分になっていきますが、0 になることはありません。
         - MipLevel = 1 Slice = 4
           - Slice = 1/4 Size = 64x64
           - Slice = 2/4 Size = 64x64
           - Slice = 3/4 Size = 64x64
           - Slice = 4/4 Size = 64x64
         - MipLevel = 2 Slice = 2
           - Slice = 1/2 Size = 32x32
           - Slice = 2/2 Size = 32x32
         - MipLevel = 3 Slice = 1
           - Slice = 1/1 Size = 16x16
         - MipLevel = 4 Slice = 1
           - Slice = 1/1 Size = 8x8
         - MipLevel = 5 Slice = 1
           - Slice = 1/1 Size = 4x4
         - MipLevel = 6 Slice = 1
           - Slice = 1/1 Size = 2x2
         - MipLevel = 7 Slice = 1
           - Slice = 1/1 Size = 1x1
       - Type = CUBE Size = 256x256 MipLevels = 9
         キューブテクスチャは 1 〜 6 面 * MipLevels のサブリソースを必要とし、深度は無視されます。
         また、面の順序は Mix::Plugin::Graphics::ITextureKit::FLAG に定義されている CUBE_??? の並びと同じになり、
         サブリソースとして追加される面を Mix::Plugin::Graphics::ITextureKit::SetFlags メソッドで設定しておく必要があります。
         以下のレイアウトは、6 面全てのフラグを設定したものになります。
         - POSITIVEX ( 正方向のＸ面 )
           - MipLevel = 1 Size = 256x256
           - MipLevel = 2 Size = 128x128
           - MipLevel = 3 Size = 64x64
           - MipLevel = 4 Size = 32x32
           - MipLevel = 5 Size = 16x16
           - MipLevel = 6 Size = 8x8
           - MipLevel = 7 Size = 4x4
           - MipLevel = 8 Size = 2x2
           - MipLevel = 9 Size = 1x1
         - NEGATIVEX ( 負方向のＸ面 )
           - MipLevel = 1 Size = 256x256
           - MipLevel = 2 Size = 128x128
           - MipLevel = 3 Size = 64x64
           - MipLevel = 4 Size = 32x32
           - MipLevel = 5 Size = 16x16
           - MipLevel = 6 Size = 8x8
           - MipLevel = 7 Size = 4x4
           - MipLevel = 8 Size = 2x2
           - MipLevel = 9 Size = 1x1
         - POSITIVEY ( 正方向のＹ面 )
           - MipLevel = 1 Size = 256x256
           - MipLevel = 2 Size = 128x128
           - MipLevel = 3 Size = 64x64
           - MipLevel = 4 Size = 32x32
           - MipLevel = 5 Size = 16x16
           - MipLevel = 6 Size = 8x8
           - MipLevel = 7 Size = 4x4
           - MipLevel = 8 Size = 2x2
           - MipLevel = 9 Size = 1x1
         - NEGATIVEY ( 負方向のＹ面 )
           - MipLevel = 1 Size = 256x256
           - MipLevel = 2 Size = 128x128
           - MipLevel = 3 Size = 64x64
           - MipLevel = 4 Size = 32x32
           - MipLevel = 5 Size = 16x16
           - MipLevel = 6 Size = 8x8
           - MipLevel = 7 Size = 4x4
           - MipLevel = 8 Size = 2x2
           - MipLevel = 9 Size = 1x1
         - POSITIVEZ ( 正方向のＺ面 )
           - MipLevel = 1 Size = 256x256
           - MipLevel = 2 Size = 128x128
           - MipLevel = 3 Size = 64x64
           - MipLevel = 4 Size = 32x32
           - MipLevel = 5 Size = 16x16
           - MipLevel = 6 Size = 8x8
           - MipLevel = 7 Size = 4x4
           - MipLevel = 8 Size = 2x2
           - MipLevel = 9 Size = 1x1
         - NEGATIVEZ ( 負方向のＺ面 )
           - MipLevel = 1 Size = 256x256
           - MipLevel = 2 Size = 128x128
           - MipLevel = 3 Size = 64x64
           - MipLevel = 4 Size = 32x32
           - MipLevel = 5 Size = 16x16
           - MipLevel = 6 Size = 8x8
           - MipLevel = 7 Size = 4x4
           - MipLevel = 8 Size = 2x2
           - MipLevel = 9 Size = 1x1

3. DLL エクスポートのモジュール定義ファイルの作成
   プロジェクトに以下のモジュール文を記述したファイル "main.def" を追加してください。

       EXPORTS
           GetInformation
           Load

   最後にプロジェクトのプロパティの「構成プロパティ」→「リンカ」→「入力」にある「モジュール定義ファイル」に "main.def" を指定してください。