2009年1月11日日曜日

android dev phone1 で OpenGLES の速度評価 (1)

ちまちまと、android dev phone1 でOpenGLESのプログラムを書いています。

いまさら、固定小数のコードを書くことになろうとは思いませんでしたが、数年前にも携帯向けのOpenGLESで固定小数のコードを書いていました。(もちろん、浮動小数でも、どちらでも動かせるように。)もう5年以上前でしょうか。やっと一般の人でも携帯電話で3DCGが動かせる時代になりました。

もともと参考にしたアプリも速度評価用アプリだったので、だいたいの数値はわかっていましたが、自分で書いてみたアプリでもだいたい同じ値が出ました。

球をストリップで描画するコードを作り、分割数を調整して、100フレーム平均の速度を出力しました。まだ、ちょっと試しただけですが、

・頂点バッファの頂点数 = 20301 (201x101)
・200頂点 x 200ストリップ = 40000ポリゴン(頂点)

で描画して、およそ 30fps くらいでした。1.2M Polygon/秒 くらいです。

半分の20000ポリゴンにしても、55 fps 出てました。(何も描画しない状態で、最大60fpsです。)

もちろん、頂点座標(x,y,z)のみ、ライティングなし、テクスチャなしの単色塗りつぶしのみです。極小ポリゴンではなく、球が画面の半分くらいの面積を占めても、速度は落ちません。(追記:よく考えると、数万ポリゴンの球ということは、1ポリゴン単位では極小ポリゴンといったほうが正しいですね。)

参考元のアプリでの計測結果で見てみると、最大、1.33M Polygon/秒 くらいだと思われます。このアプリでは、テクスチャを張っても、1M 以上の速度を保っているようですが、ライティングさせると、3分の1 くらいに落ちるようです。

バッファオブジェクトを使っていることもあり、固定小数でも浮動少数でも、大きな速度差は見えません。あと、ストリップハードウェアのようで、ストリップをつかわないと速度は3分の1に落ちるようです。

まあ、G1はiPhone には負けているでしょうが、趣味で動かすには十分な速度ではないでしょうか。もうしばらく遊んでみます。

0 件のコメント: