4.画面表示サイズを設定

Android実機にて表示サイズまたはスケーリング(自動拡大縮小)を設定します。

(※「2.Dish P Helper」を利用すると簡単に設定可能です。)

「piyoko_defense」プロジェクトフォルダ内の「jni」フォルダにある "main.cpp" をメモ帳等(テキストをUTF-8で保存可能なエディター)で開きます。

この場合、フォルダの場所は「D:/Android/project/piyoko_defense/app/jni」になります。

"main.cpp" の途中の行に下記の3行があります。

//hgio_view( 480, 320 );

//hgio_scale( 1.0f, 1.0f );

//hgio_autoscale( 0 );


 行頭が「//」になっている項目は、コメントアウトされ機能しません。 初期設定では、スケーリングの設定は行なっていませんので、上のようになっているはずです。

hgio_view( 480, 320 );

 まず、「//」を消去して、hgio_viewの行を有効にします。hgio_viewにより、もともとの画面サイズ(スクリプトが動作する解像度)を設定してください。上の例では、横サイズが480、縦サイズが320であることを示しています。 

hgio_scale( 1.0f, 1.0f );

 指定した倍率で表示を行ないたい場合は、hgio_scaleの行を有効にします。hgio_scaleにより、もともとの画面サイズに対して、指定した倍率で表示を行ないます。倍率を固定したい場合には、こちらを使用してください。通常は、hgio_autoscaleを使用することを推奨します。 

hgio_autoscale( 0 );

 画面のスケーリングを自動的に調整したい場合は、hgio_autoscaleの行を有効にします。hgio_autoscaleにより、描画した画面サイズを適切に拡大縮小し、現在のスクリーンに表示させます。

カッコ内の数値で、スケーリングの方法をいくつか指定することができます。 

  0 : 画面全体に収まる最適な大きさ(縦横比は維持)

  1 : X方向のサイズを基準に拡大縮小(縦横比は維持)

  2 : Y方向のサイズを基準に拡大縮小(縦横比は維持)

  3 : 縦横比は無視して画面全体に表示


スケーリングの設定は、起動時に行なわれます。スクリプト実行中に変更することはできません。 

hgio_uvfix( 1 );

 テクスチャを拡大した際に、隣のピクセルがブレンドされてしまう現象を補正します。 通常はこのオプションを指定する必要はありませんが、画面のスケーリング等で正しくテクスチャが表示されない場合に試してみてください。

カッコ内の数値が0以外の場合は補正がONになります。0の場合は補正がOFFになります。

下記の例では、画面サイズは「640x960」表示で、「画面全体に収まる最適な大きさ(縦横比は維持)」の設定となります。

これで画面の表示サイズの設定は終わりです。


Windows上で実行する際の画面サイズ変更("hsp3dish.ini"について)

「hsp3dish.ini」は、Windows上で実行する際(開発時)に画面サイズなどの設定を参照するためのファイルです。

ソーススクリプトがあるフォルダに置いておくと、ソーススクリプト実行時に設定が反映されます。

パラメーター名          設定内容

----------------------------------------

wx = 画面のX(横)サイズ

wy = 画面のY(縦)サイズ

autoscale = 自動スケーリング値

これで画面表示サイズの設定は終わりです。


Windows用の実行ファイル(*.EXE)での画面サイズ変更(その1)

標準命令である「screen」命令でウィンドウサイズを変更することができます。

これはEXEファイルにした時でも有効です。


Windows用の実行ファイル(*.EXE)での画面サイズ変更(その2)

HSP3Dishを利用したWindows用の実行ファイルを作成することができますが、起動設定ファイル(hsp3dish.ini)は適用されません。

Windows用の実行ファイルを作成する場合は、#packopt命令にて画面サイズを変更できます。

#packopt  xsize  480 ; 横サイズ

#packopt  ysize  800 ; 縦サイズ

これで画面表示サイズの設定は終わりです。

HSP3DishでのAndroid実機のスケーリング時の上下余白に余計なバッファが表示されてしまう不具合について

Android実機のスケーリング時の上下余白に余計なバッファが表示されてしまう不具合について、現在(2022/10/30)の時点で現象が特定の端末もしくは特定のAndroidのバージョンで発生している模様です。


通常画面のクリアは「redraw 0」の後に「color 0, 0, 0 : boxf」で画面を初期化しますが、上下余白に余計なバッファが書き込まれてしまう現象が起こる場合は、画面の自動クリア命令「setcls」命令を使用すると現象が起こらなくなります。

具体的には、

setcls CLSMODE_SOLID, $000000

とソースの頭あたりで一度だけ呼び出してあげるだけで、「redraw 0」を実行するするたびに自動で画面のクリアをしてくれます。

HSP3のドキュメントには手動による画面クリアのほうが処理速度が出るそうですが、自動画面クリアでも特に問題ないと思います。