A major part of this project (which we expected to be the most difficult) is integrating all these programming libraries that work well individually into a single application. This includes Mobile 5.0 (the latest SDK that comes with the Pocket PC), OpenGL ES (a minimized "version of OpenGL" for embedded systems), Klimt (which sits on top of OpenGL ES and extends it to resemble normal OpenGL), PocketHAL (provides access to streaming frame buffers), DSVideoCE (wrapper library around DirectShow for camera access), and (most importantly) ARToolkitPlus (calculates camera position and orientation relative to physical markers in real time).
I have successfully built simple applications that use all of these libraries, but individually, which was sometimes a nontrivial task. I have put together an application that uses ARToolkitPlus and Mobile 5.0, but this only looks at a static image and returns the modelview matrix that represents the camera position and orientation. I assume that once the video feed is accessed, the buffer can be used in a similar fashion. I was able to build an application that uses both DSVideoCE and PocketHAL which just displays a stream from the camera (of course, we haven't received our cameras yet so that makes you wonder a bit). I've encountered difficulty developing these mobile applications using Visual Studio 2005 because some of the builds were developed on different IDE's or for different platforms.
Another issue we've dealt with was just knowing what system we are using. Developers sometimes use the terms Windows CE x.x, Pocket PC 2003/x.x, Mobile x.x interchangeably and this causes a great deal of confusion. Today I tried to build a project with embedded Visual C++ 4 but there was a conflict because it was looking at Windows CE 5.0 binaries which isn't necessarily the same as what the Mobile 5.0 SDK provides (although it is powered by CE 5.0). We've been building our projects for the ARM4V architecture, but I discovered today that the processor onboard (Intel PXA270) belongs to the XScale generation architecture which is the 5th generation of ARM. I don't know yet what this means about the compatibility of the tools we are using.


