androidopengl-esopengl-es-2.0ogremsaa

How to enable msaa on android app


I'm making app with android + ogre3d. I'm using FSAA property, but there is an ogre bug: when use externalWindowHandle and fsaa together, fsaa doesn't work. I'm using Surfaceview as a window for rendering.

Now i've found android developer option "Force 4x MSAA", and when i've turned on this option, my app started to work great, as I want! This option make all OpenGL es 2.0 apps working with MSAA. But it's not a good way asking users to turn on this option on their phones.

So, is there any way to make my app always use 4x MSAA?


Solution

  • The bug is just about linux OS.

    FSAA is old technology and ogre ignoring it. So, you can use MSAA or CSAA instead.

        ANativeWindow *nativeWnd = ANativeWindow_fromSurface(env, surface);
    
        Ogre::NameValuePairList opt;
        opt["MSAA"] = "2";
        opt["externalWindowHandle"] = Ogre::StringConverter::toString(
                reinterpret_cast<size_t>(nativeWnd));
        gRenderWnd = Ogre::Root::getSingleton().createRenderWindow("OgreWindow", 0, 0, false, &opt);