この文書ではビルドアクションについて説明します。
Contents
ビルドアクションとは、プロジェクトに登録されたファイルに対して、ビルド時に実行する処理のことをいいます。
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でアセンブリに埋め込まれたファイルの読み込みを行っています。