04-02 emo.PointSprite

[ご注意] emo-framework は恐らくもうメンテされないです

emo-framework に出会ってから、面白いのでいろいろ試しています。
今は、穴が開くほど、ドキュメント、API Reference、サンプルプログラムを見ています 😀
ケアレスミスらしきものもいくつかあったので、少しでもお役に立てればとまとめて追って報告できるといいなーと思ってる今日この頃です。

今は、花火を描画したくてー
サンプルプログラムを改造した程度のもので、一応できたのですが、花火の一つ一つの玉を全部 sprite にしているためやっぱり動作が重いです。
(emo-framework じゃなく、自分の作り方と android のせいだと思っています)

でも、どーしても花火を 1 枚の画像にしたくないので、いろいろ調べてみたら emo.PointSprite なるものを発見!

でも、自分にはまだ emo.PointSprite を使った表示すらできてないのでー
いろいろ悪戦苦闘中です。
でも、やっと調べ方がわかってきた(?)ぽいのでメモをしておきました。

1. wiki を見る
 http://code.google.com/p/emo-framework/wiki/PointSprite
2. emo-framework の PointSprite のソースを見る
 http://emo-framework.googlecode.com/svn/trunk/Emo-Android/jni/emo/Drawable.cpp

 

下のようになっていたので、たぶん onDrawFrame ないで使えば表示される!(んじゃないかと思っています 🙂

void PointDrawable::onDrawFrame() {

 

↑ 案の定違うようです 😳
サンプルを作って実行させると、↓のようなエラーが大量に出てしまいます 😯
“E/libEGL(478): called unimplemented OpenGL ES API”

API が未実装だったり、OpenGL 11 にすると直ったりするようなのですが、詳細の調べ方から勉強中です。
とりあえず、Android エミュレーターの “GPU emulation”, “yes” では直りませんでした。
エラーのサンプル(sprites.show(); をなくせばエラーは出ないのですが、画面には何も描画されないです 😥

実行できました!
それぞれ “GPU emulation”, “yes” にしたところ Android 4.1 で実行できました 🙂
・Android 2.3.3 → ダメ
・Android 4.0.3 → ダメ(Windows 7 なのでエミュ自体が起動しませんでした 🙁
・Android 4.1 → OK

“GPU emulation”, “yes” の設定方法
 1. Android Virtual Device Manager(エミュを起動するウィンドウ)
 2. [Edit] → Hardware の [New] ボタン
 3. Property:”GPU emulation” → [OK]
 4. “GPU emulation” の Value をクリック → “Yes”
 5. [Edit AVD] ボタン

class Main {
  function onLoad() {
    local points = [
      emo.Vec2(0, 0), emo.Vec2(50, 50), emo.Vec2(100, 100)
    ];
    local sprites = emo.PointSprite("A.png");
    sprites.setPoints(points);
    sprites.hide();
    sprites.load();
    sprites.show();  // ← たぶんここがエラー
  }
}

function emo::onLoad() {
    emo.Stage().load(Main());
}

コメントを残す

メールアドレスが公開されることはありません。


*