Example #1
0
int __stdcall wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd )
{
    g_hInstance = hInstance;

    CLauncher la;
    bool runUpdate = false;
    
    // parse command line args
    for ( int i=0; i<__argc; i++ ) {
        if ( 0 == wcscmp(__wargv[i], LAUNCHER_UPDATE_KEY) ) {
            logger.emit() << L"cmd key " LAUNCHER_UPDATE_KEY << std::endl;
            runUpdate = true;
        }
        else if ( 0 == wcscmp(__wargv[i], LAUNCHER_APPDIR_KEY) && (i+1)<__argc ) {
            logger.emit() << L"cmd key appdir: " << __wargv[i+1] << std::endl;
            la.setAppDir(__wargv[i+1]);
        }
    }

    // run update
    if ( runUpdate && !la.appDir().empty() ) {
        logger.emit() << L"Running update" << std::endl;
        la.update();
    }
    
    // try to update
    else if ( !runUpdate && la.tryUpdate() ) {
        logger.emit() << L"Try to run update" << std::endl;
        return 0;
    }
    
    // run application
    logger.emit() << L"Running application" << std::endl;
    int ret = la.run();

    return ret;
}
int main()
{
    //MEMORY::MemoryManager.setLogMode(MEMORY::MMLM_EXTD);

    CLauncher launcher;
    if(!launcher.run())
        return 0;

    SEngineParams params;

    params.Renderer = ERT_OPENGL;
    params.Bits = 16;
    params.WindowSize = dimension2du(640,480);
    params.FullScreen = 0;


    INovaEngine* Engine = createEngineEx(params);

    scene::ISceneCamera* cam   = Engine->getSceneManager()->createSceneCamera();
    cam->RegisterNode();
    cam->setActive();
    cam->setPosition(core::vector3df(0,0,3));
    cam->setTarget(core::vector3df(0,0,-1));
    cam->release();

    gui::IFont* font = Engine->getResourceManager()->loadFont("myfont.fnt");
    Engine->getGUIManager()->setActiveFont(font);
    //--------------------------------------------------------------------------
    u32 FPS = 60;
    std::vector<u32> FpsList;

    while(Engine->update())
    {
        if(FPS != Engine->getRenderer()->getFPS())
        {
            char buf1[256];
            sprintf(buf1,"fps:%f mpf:%f ppd:%d vpd:%d",Engine->getRenderer()->getFPS(),Engine->getRenderer()->getMPF(),Engine->getRenderer()->getPPD(),Engine->getRenderer()->getVPD());
            Engine->getWindow()->setWindowCaption(buf1);
            FPS = Engine->getRenderer()->getFPS();
            FpsList.push_back(FPS);
        }

        Engine->getRenderer()->begin_frame();
        Engine->getGUIManager()->renderGUI();
//        Engine->getGUIManager()->drawText(core::vector2ds(20,400),NULL,"Simple test (external font)  46 symbols ^_^ [@] !!");
        //Engine->getGUIManager()->drawText(core::vector2ds(20,200),NULL,"Simple multiline\ntest message\nnananananana\r\nlalalalala");
        Engine->getRenderer()->end_frame();
    }
    //r + 1d + 46 = 0.2173  ms = 4608fps (0.2170ms)

    //r + 1d * 49 = 4.381 fps (0.2282 ms) pers 0.001838 ms
    //r + 7d * 7  = 1.995 fps (0.5012 ms) pers 0.007410 ms

    //r = 0.1380  ms = 7241fps (0.1381ms)

    //46     = 0.0793  ms
    //1      = 0.00172 ms
    u32 FpsM=0;
    for(int i = 0; i < FpsList.size(); i++)
    {
        FpsM += FpsList[i];
    }
    FpsM/=FpsList.size()+1;
    printf("MFPS = %d  tested:%d seconds\n",FpsM,FpsList.size());

    font->release();
    Engine->release();


    return 0;
}