I've tested an OpenGL ES program I have made on both an IPAQ 4700 and 4150. The 4700 has a 624 MHz processor while the 4150 has a 400 MHz processor and it has more memory.
The problem is that the 4700 runs at 9 fps while the 4150 runs at 25 fps. I originally thought that this could be because of the 4700 having a 480 x 640 screen instead of a 240 x 320 screen, but I changed the viewport and still no difference was found.
Any ideas on why this could be happening?
Do you know if rasterization or buffer swapping is the bottleneck?
It could be buffer swapping, but the 4700 should way outperform the 4150. Is there any way to change the size of the window. If I change the parameters to ugCreateWindow for width and height, I do not find any change.
Not sure. If you look at numbers like this http://pockethal.droneship.com/features.html then you see how much influence the video chip & bus architecture can have (the slowest device has the fastest CPU). I'd search on pocketmatrix if there is any info on the two models you are using, specifically why the 4700 is so slow.
BTW, are you running in native or in emulated resolution?
The 4700 has a native resolution of 480 x 640.
Is it possible to comment on my previous question about changing the window size. If I could do this, I could try to make each pda render at the same resolution.
Well, for Windows Mobile, smaller window sizes do not really exist. But since you have the ug source, you can try hacking it.
I have now created 2 versions of my project. One uses the Vincent library and one uses Hybrid's implementation. The results are as follows :
IPAQ 4150 : 25 FPS
IPAQ 4700 : 9 FPS
IPAQ 4150 : 55 FPS
IPAQ 4700 : 47 FPS
So it does seem that the lower speed of the 4700 is not being caused by the Vincent library. The only problem is that the drop in performance is quite substantial in the first case.
Any clue whether it's the rendering or the swap-buffer call that's so much slower?
It is quite possible the swap-buffer call as I was only rendering 36 polygons. If I move the camera so that the polygons are offscreen, the framerate remains the same so this also leads me to believe that the swap-buffer call is causing the big slowdown.
Sounds like a case to look into hooking up PocketHAL, which *might* yield a better performance than the standard GDI blit of surfaces. Have you tried the PocketHAL examples on the two devices to see if PocketHAL could make a difference (e.g. the PocketHAL samples run on both devices with the relative speed you would expect)? You can download it here: http://pockethal.droneship.com/
Hey guys, now my 4700 works good. I found this page :
It says, I have to inform with a resource item when I use the device that has the higher resolution than 240*320. So I did like this :
1. From the Insert menu, select Resource.
2. Click the Custom button.
3. Enter CEUX for the resource type.
4. Set the resource data to 01 00.
5. Click the Properties tab.
6. Rename the item to "HI_RES_AWARE", including quotes. (If the quotes are omitted, HI_RES_AWARE will be incorrectly defined as a numeric value in resource.h, and you will need to go back and delete the line from resource.h.)
7. Deselect the external file checkbox.
Then my application works great on 4700 with 480*640 resolution.
Of course, it shows me a good FPS. The problem was not based on Vincent in my case.
Adding the "HI_RES_AWARE" resource script actually decreased my framerate substantially.