我正在使用android + ogre3d创建应用。我正在使用FSAA属性,但是有一个食人魔bug:当同时使用externalWindowHandle和fsaa时,fsaa无法正常工作。我正在使用Surfaceview作为渲染窗口。

现在,我已经找到了android开发人员选项“ Force 4x MSAA”,并且当我打开该选项时,我的应用程序开始按需运行了!此选项使所有OpenGL ES 2.0应用程序都可以与MSAA一起使用。但这不是要求用户在手机上打开此选项的好方法。

那么,有什么方法可以使我的应用始终使用4倍MSAA?

最佳答案

该错误仅与linux OS有关。

FSAA是旧技术,食人魔会忽略它。因此,您可以改用MSAA或CSAA。

    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);

09-05 18:06