Windows CE support

View: New views
1 Messages — Rating Filter:   Alert me  

Windows CE support

by Vincent R. :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi everyone,

I am a windows mobile developper and recently I wanted to play with openGL
ES and I found  a glut|es project based on freeglut.
Unfortunately it doesn't work with my device using opengl es
implementation from Qualcomm,
so I wanted to restart from latest trunk and apply some patch.
I was surprised to see some preliminary work and a project targetting
embedded Visual Studio (eVC)
but when I imported it inside VS2005 there was a lot of errors so I have
started to make some changes.

To sum up what was necessary:

1) on mobile device we used opengl ES and not openGL and includes are
slighly different because we include
generally <GLES/gl> and <GLES/glues.h> so I have added a GLES folder
inside include folder with a glutes header.
Another option would be to add a folder GLES with inside a header that
would redirect to freeglut_std.h as you already do for desktop platform.

2) On wince there is no errno so you should protect include by #if
HAVE_ERRNO ...

3) Normally opengl es doesn't define the following definitions and code
using it should be protected


#define GL_ACCUM_RED_BITS                 0x0D58
#define GL_ACCUM_GREEN_BITS               0x0D59
#define GL_ACCUM_BLUE_BITS                0x0D5A
#define GL_ACCUM_ALPHA_BITS               0x0D5B


#define GL_RGBA_MODE                      0x0C31
#define GL_DOUBLEBUFFER                   0x0C32
#define GL_STEREO                         0x0C33


However I have defined them in my local opengl es include but maybe it
would be safer to protect
them by a #ifndef _WIN32_WCE.

Finally and this is my biggest issue, in freeglut_display.c you are using
SwapBuffers on windows platforms
but it doesn't exist on windows ce so I wanted to use the same code as
glutes but this is not possible anymore.
Indeed it was using the following lines :

if(fgStructure.Window->Window.SurfaceType == EGL_WINDOW_BIT)
        {
                eglSwapBuffers(fgDisplay.eglDisplay,
fgStructure.Window->Window.Surface);
        }
        else if(fgStructure.Window->Window.SurfaceType == EGL_PIXMAP_BIT)
        {
                InvalidateRect(fgStructure.Window->Window.Handle, NULL, FALSE);
        }

but fgStructure had changed and doesn't have a eglDisplay anymore or at
least I don't know how to get it.

Any idea on how to fix it ?

One last thing you should create a build folder with inside the following
folder :


+ build
  msvc
  msvc-ce
  ...


It would be cleaner that having some folder for each configuration
Visual2008Static, Visual2008, ...
I am ready to help you with this.

Would it be possible to create a branch for me to add support for OpenGL
ES ?
Or maybe I could post regularly some patch to be integrated because ?
What is the best option ?



Regards

Vincent Richomme

------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
Freeglut-developer mailing list
Freeglut-developer@...
https://lists.sourceforge.net/lists/listinfo/freeglut-developer