Was just watching the video from back in May by Chris Pruett. He had a
performance slide comparing canvas to opengl and as he noted there, canvas
is much slower. I am sure you know this, but getting 30fps on a Canvas with
more than a dozen or so sprites might be difficult when you factor in game
logic, collision detections, etc. I didn't realize you were running this on
the emulator as well. For sure you'll see much faster fps on a real device.

On Tue, Jan 19, 2010 at 10:55 PM, Dan Sherman <impact...@gmail.com> wrote:

> > I run my app on emulator, and currently have
> > not tested it on real device.
>
> The emulator is not, in any way, going to run the same speed as a real
> device.
>
> Run it on a real device and see what FPS you get.  Or if you want, publish
> an APK and someone here will run it I'm sure (I'll do it =P)
>
> - Dan
>
> On Wed, Jan 20, 2010 at 1:44 AM, Andre <andranik.abra...@gmail.com> wrote:
>
>> Hi,
>>
>> Yesterday, I've changed my code, to work with the matrix more
>> effectively...
>>
>> My GameEntity class now looks like this:
>>
>> ----------GAME ENTITY----------
>>
>> public class GameEntity {
>>        public Bitmap mBitmap;
>>        private Rect mBounds;
>>        private Matrix mMatrix;
>>        public int mWidth;
>>        public int mHeight;
>>        public boolean mAlive;
>>        public float mX, mY;
>>        public float mVelocityX, mVelocityY;
>>        public float mMoveAngle, mFaceAngle;
>>        public float mRotationVelocity;
>>
>>        public GameEntity(Bitmap bitmap) {
>>                mBitmap = bitmap;
>>                mBounds = new Rect();
>>                mMatrix = new Matrix();
>>                mWidth = bitmap.getWidth();
>>                mHeight = bitmap.getHeight();
>>                mAlive = false;
>>                mX = 0.0f;
>>                mY = 0.0f;
>>                mVelocityX = 0.0f;
>>                mVelocityY = 0.0f;
>>                mMoveAngle = 0.0f;
>>                mFaceAngle = 0.0f;
>>                mRotationVelocity = 0.0f;
>>        }
>>
>>        public void draw(Canvas canvas, float angle) {
>>                Matrix m = mMatrix;
>>                m.reset();
>>                m.postTranslate(mX - mWidth / 2, mY - mHeight / 2);
>>                m.postRotate(angle, mX, mY);
>>                canvas.drawBitmap(mBitmap, m, null);
>>        }
>>
>>         public Rect getBounds() {
>>                mBounds.left = (int)(mX - mWidth / 2);
>>                mBounds.top = (int)(mY - mHeight / 2);
>>                mBounds.right = (int)(mX + mWidth / 2);
>>                mBounds.bottom = (int)(mY + mHeight / 2);
>>                return mBounds;
>>        }
>> }
>>
>> And "draw" methods in GameView class:
>>
>> ----------GAME VIEW----------
>>
>> private void drawSpaceship(Canvas canvas) {
>>         mSpaceship.draw(canvas, mSpaceship.mFaceAngle);
>> }
>>
>> private void drawAsteroids(Canvas canvas) {
>>        GameEntity[] asteroids = mAsteroids;
>>        GameEntity asteroid;
>>        for(int i = 0; i < MAX_ASTEROIDS; i++) {
>>                asteroid = asteroids[i];
>>                 if(asteroid.mAlive) {
>>                        asteroid.draw(canvas, asteroid.mMoveAngle);
>>                 }
>>        }
>> }
>>
>> private void drawBullets(Canvas canvas) {
>>        GameEntity[] bullets = mBullets;
>>         GameEntity bullet;
>>        for(int i = 0; i < MAX_BULLETS; i++) {
>>                bullet = bullets[i];
>>                if(bullet.mAlive) {
>>                        bullet.draw(canvas, bullet.mMoveAngle + 90);
>>                }
>>        }
>> }
>>
>> This gives me an extra 4-5 FPS, and now I have ~25 FPS.
>> It worth to mention, that I run my app on emulator, and currently have
>> not tested it on real device.
>>
>> I decide to go little further with testing and commented out
>> m.postTranslate() method call, and got +4 FPS, after that I commented
>> out m.postRotate(), and got +12-15 FPS, it seems that rotation (with
>> pivot points) is very costly...
>>
>> Best Regards, Andre
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Android Developers" group.
>> To post to this group, send email to android-developers@googlegroups.com
>> To unsubscribe from this group, send email to
>> android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
>> For more options, visit this group at
>> http://groups.google.com/group/android-developers?hl=en
>>
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>
-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to