2011年11月23日水曜日

AndroidでOpenGL(ESですけど)

AndroidでOpenGLによるプログラムの書き方を調べています。正確には組み込み用のOpenGL ESですが、OpenGLとそんなに違いはありません。というか、そこまで詳しくOpenGLを理解しているわけではないですが、一通りOpenGL、およびOpen InventorをSGI上でc++によりプログラムしてみたことあるので、関数は知っています。ただAndroidだとどのclassのどのメソッド上にOpenGLの各関数を実装したらいいのかがわかりません。(Androidのアプリはステートマシンのようなもので、状態遷移のたびにCallされる関数が決まっているようですから、その順番にあわせて必要なOpenGL関数を実装していかないといけません。

ところで、基本としてAndroidのアプリ上で画像を描くには、まずアクティビティ(Activity:画面)を生成して、そこに描画領域を指定します。この指定方法に2つの方法があり、CanvasとSurfaceViewです。Canvasはアプリケーションスレッド上で動作するのに対し、そこと並行した別スレッド上で動かすSurfaceViewというような感じです。そして、OpenGL ESはSurfaceView上で動きます。

処理速度的にあSurfaceViewは別スレッドで動くので高速に動くように見えますが、アプリが動いているときは当該スレッドが当然動いているので、別スレッドとして動くSurfaceViewではどうしてもCanvasには勝てません。

追記:
ChromeのNative clientという技術があります。chroniumのベータ版という実用化までは先が長い技術なんですが、急展開して日本のスクエニがこれでゲームを作りchrome storeで販売を始める予定だと。技術の内容的にchrome上でc,c++のコードを動かすSDKだとか、、、セキュリティどうやって確保するんだ?何か色々注意点が書かれてましたが(早いコードを書くのに注意する点とか)そこのWebGLを使う上での注意点がかなりコード細かく記載されていました。読んで見ると、なるほどと思える事が多くてためになります。AndroidでOpenGL ES使う時も注意した方がいいような話です。


後で削除するか、大幅修正するけどとりあえずメモ

0 件のコメント:

コメントを投稿