ビルドアクションについて

この文書ではビルドアクションについて説明します。

ビルドアクションとは

ビルドアクションとは、プロジェクトに登録されたファイルに対して、ビルド時に実行する処理のことをいいます。

./image/user_guide/BuildAction.JPG

図1 右クリックでビルドアクションを設定する

./image/user_guide/BuildAction02.JPG

図2 プロパティウィンドウでビルドアクションを設定する

PSM Studioでは、ファイルに次のビルドアクションを設定することができます。

ビルドアクション 説明
Compile ソースコードとしてコンパイルします。
Content ファイルに変更は加えませんが、実機に転送を行います。
ShaderProgram シェーダープログラムとしてコンパイルします。
None ファイルに対して何も行いません。実機にも転送しません。
EmbeddedResource ファイルをアセンブリに埋め込みます。
EmbeddedShaderProgram シェーダープログラムとしてコンパイルし、アセンブリに埋め込みます。
PsmMetadata app.xml に対し設定します。

以下のファイルをプロジェクトに登録する場合、自動的にビルドアクションが設定されます。

ファイル名が「osc.cfg」または 拡張子が「*.png, *.jpg, *.bmp, *.gif, *.dds, *.wav, *.mp3, *.mdx」のファイル。

ビルドアクションに "Content" が設定されます。

拡張子が「*.fcg, *.vcg, *.fp.cg, *.vp.cg」のファイル。

ビルドアクションに "ShaderProgram" が設定されます。

ファイル名が「app.xml」のファイル。

ビルドアクションに "PsmMetadata" が設定されます。

埋め込みを指定したファイルの利用

ビルドアクションに埋め込み(EmbeddedResourceまたはEmbeddedShaderProgram)を設定した場合、埋め込まれたファイルは次のようにして利用します。

sample/Tutorial/TutoLib/SimpleSprite.cs
private static ShaderProgram CreateSimpleSpriteShader()
{
    //@j 埋め込まれたファイル名。
    //@e Embedded file name.
    string resourceName = "TutoLib.shaders.SimpleSprite.cgx";

    Assembly resourceAssembly = Assembly.GetExecutingAssembly();
    if (resourceAssembly.GetManifestResourceInfo(resourceName) == null)
    {
        throw new FileNotFoundException("File not found.", resourceName);
    }

    //@j ファイルストリームの取得とメモリの確保。
    //@e Get filestream and allocate dataBuffer.
    Stream fileStream = resourceAssembly.GetManifestResourceStream(resourceName);
    Byte[] dataBuffer = new Byte[fileStream.Length];

    //@j ファイルをメモリに読み込む。
    //@e Read files into the dataBuffer.
    fileStream.Read(dataBuffer, 0, dataBuffer.Length);

    //@j メモリに配置されたデータを利用する。
    //@e use data.
    var shaderProgram = new ShaderProgram(dataBuffer);
    shaderProgram.SetUniformBinding(0, "u_WorldMatrix");

    return shaderProgram;
}

ここではEmbeddedShaderProgramでアセンブリに埋め込まれたファイルの読み込みを行っています。