Nanashi-softプログラマ専用PSSuite開発


◇PS Suite開発 -日本語表示-

付属サンプルを使用して日本語表示を行ってみます

サンプルは↓にインストールされています
C:\Users\Public\Documents\Pss\sample

フォントサンプルと言うそのままの名称のものがあります
C:\Users\Public\Documents\Pss\sample\Imaging\FontSample

ザッと見たところ,SampleDrawクラスが使えれば,色々できそうです
これは,共通ライブラリとして置かれていました
C:\Users\Public\Documents\Pss\sample\lib\SampleLib\SampleDraw.cs

先ほど作成した,空のプロジェクトに入れて使えるようにしたいと思います
1. SampleDraw.csと SampleSprite.csを,AppMain.csのあるところと同じフォルダにコピーする
2. PS Suite Studioのソリューションのすぐ下のフォルダで右クリック
そして,追加→ファイルを追加を選択
3. SampleDraw.csと SampleSprite.csを選択して,右下の Openボタンをクリック

これで,プロジェクトにファイルを追加できました
実はサンプルフォルダからコピーすると,そのままではエラーになるので,修正します

4. createSimpleTextureShader部分を修正
    private static ShaderProgram createSimpleTextureShader()
    {
/*ここから
		string ResourceName = "SampleLib.shaders.Texture.cgx";

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

        Stream fileStreamVertex = resourceAssembly.GetManifestResourceStream(ResourceName);
        Byte[] dataBufferVertex = new Byte[fileStreamVertex.Length];
        fileStreamVertex.Read(dataBufferVertex, 0, dataBufferVertex.Length);
			
		var shaderProgram = new ShaderProgram(dataBufferVertex);
*/ここまでを削除
//元からコメントアウトされていたものを生かす
		var shaderProgram = new ShaderProgram("/Application/shaders/Texture.cgx");

5. createSimpleColorShader部分を修正
    private static ShaderProgram createSimpleColorShader()
    {
/*ここから
		string ResourceName = "SampleLib.shaders.Simple.cgx";
			
		Assembly resourceAssembly = Assembly.GetExecutingAssembly();
		if (resourceAssembly.GetManifestResourceInfo(ResourceName) == null)
		{
			throw new FileNotFoundException("File not found.", ResourceName);
		}

        Stream fileStreamVertex = resourceAssembly.GetManifestResourceStream(ResourceName);
        Byte[] dataBufferVertex = new Byte[fileStreamVertex.Length];
        fileStreamVertex.Read(dataBufferVertex, 0, dataBufferVertex.Length);
			
		var shaderProgram = new ShaderProgram(dataBufferVertex);
*/ここまでを削除
//元からコメントアウトされていたものを生かす
		var shaderProgram = new ShaderProgram("/Application/shaders/Simple.cgx");

これで,SampleDrawクラスが使用可能になりました
メインソースから呼び出してみます

6. AppMain.csを開いて,上の usingが沢山並んでいるところに
using Sample;	//SampleDrawクラスを呼び出す為
using Sce.Pss.Core.Imaging;	//Fontクラスを呼び出す為
を追加する

7. SampleDrawの初期化をする
Initializeの最後に以下を追加
SampleDraw.Init(graphics);

Mainの最後に以下を追加
SampleDraw.Term();
そのままだと,そこは通過しないと怒られるので,サンプルに書いてある通り対処する
AppMainクラス宣言の下に,loop定義を追加する
	public class AppMain
	{
		private static GraphicsContext graphics;
		static bool loop = true;	//追加

Mainの,whileループを loopで判定変更する
		public static void Main (string[] args)
		{
			Initialize ();

			while (loop) {	//trueをloopに変更

Mainの,whileループを loopで判定変更する
		public static void Main (string[] args)
		{
			Initialize ();

			while (loop) {	//trueをloopに変更

8. フォントを予め生成する
AppMainクラス宣言の下に,usefont定義を追加する
	public class AppMain
	{
		private static GraphicsContext graphics;
		static bool loop = true;
		static Font usefont;	//追加

Initializeに以下を追加する
usefont = new Font(FontAlias.System, 70, FontStyle.Regular);
70のところがフォントサイズです

9. 文字を描画する
Renderに以下を追加する
		public static void Render ()
		{
			// Clear the screen
			graphics.SetClearColor (0.0f, 0.0f, 0.0f, 0.0f);
			graphics.Clear ();

			SampleDraw.DrawText("日本語でOK?", 0xffffffff, usefont, 0, 0);

			// Present the screen
			graphics.SwapBuffers ();
		}

●DrawTextメソッド
SampleDrawクラスはスタティッククラスですので,宣言なしで使用できます
SampleDraw.DrawText(文字列, カラー, 使用フォント, X座標, Y座標);
文字列:普通にstring型です。改行などは効きません
カラー:0xAARRGGBBです。αは0が透明~255が不透明です
※PSSuiteの仕様的には 0xRRGGBBAAです。Vector4(Rf,Gf,Bf,Af)でクラスに送ります。このサンプルクラスはあまりよくありませんね
使用フォント:Fontクラスを生成してセットします
new Font(FontAlias.System, フォントサイズ, FontStyle.Regular);
X座標,Y座標:画面上の実ドットで記述します。左上隅が(0,0)です



TOPプログラマ専用PSSuite開発

ネコミトリ 詰めピラミッド+パジャマ萌えっ娘☆優愛