前回は、とにかく四角形を表示してみた。
今回は表示した図形を拡大・縮小したり、回転させてみよう。
描画の処理は、とにかくRendererのonDrawFrameメソッド内に書くことになっている。
まずは前回のonDrawFrameメソッドの処理を再掲する。
@Override
public void onDrawFrame(GL10 gl) {
// 画面を塗りつぶす
gl.glClearColor(0.f, 0.f, 1.f, 1.f);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
// 四角形の座標
float[] vertices ={
-0.5f, -0.5f,
0.5f, -0.5f,
-0.5f, 0.5f,
0.5f, 0.5f,
};
FloatBuffer fb = makeFloatBuffer(vertices);
// 四角形の描画
gl.glVertexPointer(2, GL10.GL_FLOAT, 0, fb);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
}
図形を回転させるにはGL10#glRotatef()メソッドを使う。
第一引数にはどれくらい回転させるのかを角度で指定する。
第二引数以降はx,y,zのどの軸を元に回転させたいかを指定する。
2Dの場合はz軸のみを考えればよいので第四引数に1.0を指定する。
例えば、24行目のglDrawArrays()メソッドの直前に以下の記述を追加してみよう。
gl.glRotatef(30.f, 0.0f, 0.0f, 1.0f);
このようにすると30度回転することができる。
変更前
|
変更後
|
図形を拡大・縮小するにはGL10#glScalef()メソッドを使う。
3つの引数はそれぞれ、x,y,z軸に対してどれくらい倍率を変化させるかを指定する。
2Dの場合は、第3引数には1.0fを指定しておけばよい。
例えば、24行目のglDrawArrays()メソッドの直前に以下の記述を追加してみよう。
gl.glScalef(0.6f, 0.6f, 1.0f);
このようにすると60%縮小することができる。
変更前
|
変更後
|