2011/01/23

様々なラッピングを施して

 
様々なラッピングを施して、iアプリ環境の自作 Virtual Machine を
Android への移植が8割程完了した。
 
以前作成したゲームコンテンツは問題なく動作。
 
完全同一の VM コードで、プラットフォームを飛び越えてゲームが動く事に
すげー感動。
 
VM の満足度は 3割ほど。「何でも、どこでも、高機能に」動かせることを
目標にしてます。
 
 
あとは Graphics3D 関連の一部 API や、画面タッチのイベントを MIDP と
Android で VM 上で吸収して実装する必要がある。
 
ここ2日間、ずーっと自宅で Android エミュに付きっ切りだったので様々な
事実を理解できた。
 
ハマる箇所は多い。とくに lockCanvas() unlockCanvasAndPost() を iアプリの
ようなダブルバッファリングをイメージしているとハマる。
 
概念としては DirectDraw 時代フリッピングと似ている。
 
 
プライマリとバックバッファを切り替える。
 
基本的に毎フレーム全描画を行うか、領域を指定して描画しないと意図しない
現象が 起きたように 見える。
 
一枚なにか描画して  lockCanvas() / unlockCanvasAndPost() の間に何も描画
しない処理を入れ、それを繰り返すとわかりやすい。
 
一つ前に転送した画面と、現在の画面が交互に表示されることが確認できる。
 
 
あとサウンド関連で midi を鳴らしているのだけど、エミュ上では場合により
onCompletion() によるループ再生が行われないときがある。
 
この場合 seekTo() を行った後、Thread.yield(); で他のタスクに優先度を
上げてやると9割方解決。10割にはまだ届かない。

0 件のコメント:

コメントを投稿