2016年12月16日金曜日

GLSurfaceViewを使ってみる3

ゲームの演出に必要なので、テクスチャを回転させてみる。

ポリゴンの回転は普通にできたのだが、それにテクスチャを張ると、絵柄が潰れてしまった。

縦長の画像を張って90°回転したのだが、微妙に潰れたのだ。

その潰れ方の比率からすると、おそらく、ディスプレイのアスペクト比の問題だろう。
OpenGL系では、座標はピクセル単位ではない。

F-10Dのディスプレイサイズは、720x1280 だが、
それを -1.0~1.0 という数値で指定する。

その辺りを考慮して、ビューポートの設定をしてみた。

gl.glViewport(0, 0, H, H);

H:画面の縦ピクセル数

この設定で回転させると、90°でも、ゆがまずに回転した。

それはそれで良かったのだが。

今回用いたのは、128x512 という縦長の画像。
ところが、他の解説サイトを見ていたら、次の一文が載っていた。

「OpenGL ESでは、正方形の画像データしかテクスチャマッピングの元画像として受け入れてくれない。」

表示できているけども…?

----追記

上記のビューポート設定だと、横画面(Landscape)の時に座標が狂ったので修正。

if ( landscape ) { // 横画面 (LandScape)
gl.glViewport(0, H -W, W, W);
} else { // 縦画面 (Portrait)
gl.glViewport(0, 0, H, H);
}

 W:画面の横ピクセル数
 H:画面の縦ピクセル数

0 件のコメント:

コメントを投稿