.NET CF OpenGLES on Windows Mobile

I am fairly new to OpenGLES on managed Windows Mobile so please forgive me for any lame questions.

In my .NET Compact Framework application I have some OpenGL ES drawing. I am using OpenGL ES wrapper by http://www.koushikdutta.com/2008/08/net … r-for.html. I am testing my applicaiton on HTC Touch HD (Blackstone). Everything works as expected when rendering on window (some Panel subclass). Since I have some additional drawing with GDI+ after OpenGLES rendering I wish to eliminate flicker by double buffering. OpenGLES is to render to backbuffer (pixmap surface), after that use GDI+ for some additional drawing on backbuffer and finaly draw backbuffer on screen.
I presumed I need to create pixmapsurface based on nativepixmap for backuffer OpenGLES rendering, but I have problems choosing configuration with EGL_PIXMAP_BIT set. I have iterated through all configs (20 of them) and there are indeed some of them with EGL_PIXMAP_BIT.

Here is my init code:

EGLConfig[] configs = new EGLConfig[50];
            int numConfig;
            int value = 0;
            bool retVal = egl.GetConfigs(myDisplay, configs, 50, out numConfig);
  
Returns 20 configs.

            Bitmap bmp = new Bitmap(256,256);
            int error = 0;
            for(int i=0 ; i<numConfig ; i++)
            {
                egl.GetConfigAttrib(myDisplay, configs[i], egl.EGL_SURFACE_TYPE, out value);
                if (value == egl.EGL_PIXMAP_BIT)
                {
  
  Finds several surfaces with EGL_PIXMAP_BIT set.

                    mySurface = egl.CreatePixmapSurface(myDisplay, configs[i], new EGLNativePixmapType(bmp.GetHbitmap()), null);

Generates Not Supported Exception


                    error = egl.GetError();
                }
            }
            int[] attribList = new int[] 
            { 
                egl.EGL_RED_SIZE, 5, 
                egl.EGL_GREEN_SIZE, 6, 
                egl.EGL_BLUE_SIZE, 5, 
                egl.EGL_DEPTH_SIZE, 0 , 
                egl.EGL_SURFACE_TYPE, egl.EGL_PIXMAP_BIT,
                egl.EGL_STENCIL_SIZE, egl.EGL_DONT_CARE,
                egl.EGL_NONE, egl.EGL_NONE 
            };

            
            
            retVal = egl.ChooseConfig(myDisplay, attribList, configs, configs.Length, out numConfig);

Strangely returns 0 confirs in numConfig.


            if (!retVal || numConfig < 1)
                error = egl.GetError();

error is 12288, EGL_SUCCESS?


            error = egl.GetError();

            EGLConfig config = configs[0];
  

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.