Open GLでは座標の原点が通常のアプリケーションのように左上隅ではなく、画面の中央にあります。
画面の中央を(0, 0) として、画面左側がX座標マイナス。右側がプラス。中央より上がY座標プラス。下側がマイナスという座標体系のようです。
しかもこの座標体系は、画面の縦横ピクセルが異なる(320 x 480)のに1:1の比率になっているようです。
このため例えば正方形を描画すると、縦の画素数が多いのに横の画素数と同じと見なされて縦につぶれたような長方形が描かれるようになります。
ただし、この座標体系は関数を呼び出すことで変更することが可能です。
glOrthof( Xの左端指定, Xの右端指定, Yの下端指定, Yの上端指定, Zの手前指定, Zの奥指定);
ES1Renderer/ES2RendererクラスのrenderメソッドがOpen GLを初期化するメソッドですが、この中にある座標体系を初期化する部分を以下のようにします。
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// ここで座標体系を指定する
glOrthof( -1.0f, 1.0f, -1.0f, 1.0f, 0.5f, -0.5f );
・
・
・
これで、画面に円を描画しても縦につぶれて描画されなくなります。
また、通常のアプリケーションのように、左上隅を原点(0, 0)、右下隅を(320, 480)としたい場合は、以下のようにします。
glOrthof( 0.0f, 320.0f, 480.0f, 0.0f, 50.0f, -50.0f );
Z軸は奥行きなのでここではあまり気にしないでください。(汗)
0 件のコメント:
コメントを投稿