ポリゴンの回転は普通にできたのだが、それにテクスチャを張ると、絵柄が潰れてしまった。
縦長の画像を張って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 件のコメント:
コメントを投稿