[ご注意] 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()); }