【訂正・補足】libGDXの描画領域の変更(クリッピング場所の変更) | Androidアプリ屋を目指して

Androidアプリ屋を目指して

Androidアプリ屋を目指して、日々精進ための開発記、兼、日記です
開発に関わることだけでなく、色々なことを記事にしたいと思います
アンドロイドアプリのカテゴリとしては、特にゲームに興味があり

こんちわー!トシたんです!

今回は、以前紹介した記事の訂正(補足)です。

■訂正前(抜粋)
// レンダリングの処理内で
GL10 gl = Gdx.graphics.getGL10();
gl.glViewport(0, 32, 320, 416); 

■訂正後
int viewWidth = Gdx.graphics.getWidth();       // 端末のスクリーン幅
int screenHeight = Gdx.graphics.getHeight();  // 端末のスクリーン高さ
int viewHeight = 416*screenHeight/480;      // クリッピングする高さ
int viewMergin = 32*screenHeight/480;       // クリッピングを開始する位置

// レンダリングの処理内で
GL10 gl = Gdx.graphics.getGL10();
gl.glViewport(0, viewMergin, viewWidth, viewHeight);

-------------
さて、変化があったところはビューポート(クリッピングする領域)の指定です。
以前は固定値(0, 0, 320, 480)で指定しておりましたが、これだと画面解像度が(720, 1280)などの高解像度の端末だと、ゲーム画面がものすごく小さくなってしまいます(下の画像参照)。
glViewportはOpenGlのAPIで、端末ごとに異なる画面サイズに対してビューポートを指定しなければなりません。
ちなみに、スクリーン座標は変化しないので、レンダリングの処理内で取得するのは冗長です。
そのため、コンストラクタなど、1回だけ実行されるところで取得したほうが良いです。

libGDXを使用していると(320, 480)などで画面の座標を設定したら、端末の解像度は気にする必要がないのが、すぐに気が付きませんでした。
また、libGDXはPCアプリとアンドロイドアプリを並行して開発できます。
そのため、簡単なデバックや動作確認を行う場合は、デスクトップで実行しています。
そして、デスクトップアプリの描画領域のサイズは(320, 480)に設定しておりました。
(エミュレータは起動が遅いのでほとんど使用していませんね)

デスクトップアプリでデバックするのがあまりにも楽なため、ここ1週間くらいスマフォやエミュレータを使用したデバックや動作確認を行なっていませんでした。
昨日、ふいにスマフォで動作確認をしたら、画面が左下に小さく。。。。。ということで間違いに気が付きました。

■訂正前

Viewポートの間違い


■訂正後

画面余白


最終的な動作確認を実機で行うのは、当然ですが、どこかの区切りで実機確認をしながら進めていくほうがいいですね。
また、色々な端末で動作確認をしたほうが良いというところも、上記の間違いでもあきらかですね。
とはいってもやはり、デスクトップで動作確認が簡単にできるのはlibGDXで開発する際の大きなメリットですので、今後も活用していくつもりです。


いや~、失敗は成功の母とは良く言ったものです。
最初に問題を発見したときは「???」状態でイライラもしましたが、分析して原因が理解できると確実に知識が1つ増えます。
今後も躓くことも多いと思いますが、1歩1歩でも、皆さんとともに成長していけたらと思います。