OpenGLESで描画する
public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
Projectを作成すると、これは作成されている。
Activityは画面のレイアウトを決定するもの?Sceneのようなものか?
アプリを起動すると、まずonCreate()が呼ばれてくるらしい。
上記にGLSurfaceViewを導入することでOpenGLESによる描画ができるようになるらしい。
以下の通り。
public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // フルスクリーン表示 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); requestWindowFeature(Window.FEATURE_NO_TITLE); MyRenderer renderer = new MyRenderer(this); GLSurfaceView glSurfaceView = new MyGLSurfaceView(this); glSurfaceView.setRenderer(renderer); setContentView(glSurfaceView); } }
Rendererを生成して、それとGLSurfaceViewをsetRendererでくっつける。
setContentViewはViewをActivityに設定する。Viewは画面のパーツ。
ボタンなどもViewのサブクラス。
Rendererの実装は以下の通り。
3つの関数くらいは自動生成してくれるが、中身は自分で実装する。
public class MyRenderer implements GLSurfaceView.Renderer { // 自分で追加したコンストラクタ。コンテキストを保持するためのもの。 public MyRenderer(Context context){ this.mContext = context; } @Override public void onDrawFrame(GL10 gl) { // TODO Auto-generated method stub // 描画処理を記述する。何度も呼び出される。 } @Override public void onSurfaceChanged(GL10 gl, int width, int height) { // TODO Auto-generated method stub // Viewport設定、画面サイズ設定などを行う。画面生成時、画面向き変更時に呼び出される。 } @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { // TODO Auto-generated method stub // 初期化処理、テクスチャ生成処理などを行う。画面生成時に呼び出される。 } }