????
OpenGL ES Cube1   ( ES: for Embedded Systems )
 OpenGL ES 2.0 の実装から OpenGLContext が廃止されたので、GLSurfaceView class を使うこと。
 → Android.opengl Packageのリファレンス
 昔Windowsで作成したOpenGLをアンドロイドに移植した覚え書き

  

 矩形のZ軸での回転

 1. 画面をタッチすると、色をランダムに変化させ、回転を反転させる
▲ 上へ


GLSurfaceViewの使用例

private GLSurfaceView glsurfaceview;

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  glsurfaceview = new GLSurfaceView(this);
  glsurfaceview.setRenderer(new MyRenderer()); setContentView(glsurfaceview);
}


.MyRendererには以下のメソッドを実装する

 void onDrawFrame(GL10 gl); // 実際の描画処理
 void onSurfaceChanged(GL10 gl, int width, int height);
 void onSurfaceCreated(GL10 gl, EGLConfig config);




矩形(頂点)の定義
FloatBuffer mObject;

float[] vertices = { // 四角形
    -0.5f, -0.5f, 0.0f,
     0.5f, -0.5f, 0.0f,
    -0.5f, 0.5f, 0.0f,
     0.5f, 0.5f, 0.0f
};

GL初期化
public void onInit(GL10 gl, EGLConfig config) {

   ByteBuffer byteBuffer = ByteBuffer.allocateDirect(vertices.length*4);
   byteBuffer.order(ByteOrder.nativeOrder());
   mObject = byteBuffer.asFloatBuffer();
   mObject.put(vertices);
   mObject.position(0);

   gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
   gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);

   gl.glMatrixMode(GL10.GL_PROJECTION);
   gl.glLoadIdentity();
   GLU.gluOrtho2D(gl, -1.0f, 1.0f, -1.0f, 1.0f);

}

シーンの描画
public void onDrawFrame(GL10 gl) {

   gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

   gl.glMatrixMode(GL10.GL_MODELVIEW);
   gl.glLoadIdentity();

   gl.glColor4f(1.0f, 0.0f, 0.0f, 1.0f); // 赤

   gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mObject);

   gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);

}


回転を反転するには、回転角をマイナス指定する。

gl.glRotatef(-angle, 0, 0, 1.0f);  // Z軸で回転



CRIMSON Systems Homeへ Copyright (C) CRIMSON Systems