mein 3d programm fps < 70 ???



  • Hallo
    ich hab ein 3d programm geschrieben, nur komischerweise bleibt die FPS immer < 70 oder < 80.
    Die run() methode habe ich von den diirectx tutorials übernommen:

    void App::run()
    {
        MSG msg;
        ZeroMemory( &msg, sizeof(msg) );
        bool message = false;
        while( msg.message != WM_QUIT )
        {
            if ( getProgramSettings()->isActive() )
                message = PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE) != 0;
            else GetMessage(&msg, NULL, 0U, 0U) != 0;
    
            if ( message )
            {
                // Translate and dispatch the message
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            }
            else
            {
                if ( getProgramSettings()->isActive() && !getDevice()->isPause() )
                {
                        render();
                }
            }
        }
    }
    
    void App::render()
    {
            getDevice()->getD3DDevice()->BeginScene();
            paint();
            getDevice()->getD3DDevice()->EndScene();
    
        getDevice()->getD3DDevice()->Present(NULL, NULL, NULL, NULL);
    }
    

    da ist es ungefähr das selbe.
    komisch ist aber, wenn ich die d3ddevice->Present(NULL, NULL, NULL, NULL); rausnehme, dann hat mein programm 100% auslastung hat, wenn ich die Present drinn habe, dann geht sie auf <5% zurück.
    wird in Present() sleep(100) ausgeführt ?

    eigentlich müsste ich über 1000 fps min haben

    ausser den FPS Text habe ich nichts als objecte.

    liegt das vieleicht am BCB6.0 den ich benutze ?
    vieleicht liegts auch daran wie ich das d3ddevice initalisiere...



  • V-Sync in den Treibereinstellungen ausmachen :).



  • bringt absolut garnix 🤡
    die demos von M$ erreichen bei mir ja auch über 3000fps



  • DEvent schrieb:

    über 3000fps

    Welche ?



  • d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
    

    geht's vielleicht so?



  • ich hab mir schon gedacht das Present() auf irgendwas wartet, wahrscheinlich hab ich wirklich irgendwo ein flag WAIT_FOR_DEVICE_IS_READY oder sowas

    werds mal ausprobieren

    zZ implementiere ich die automatische suche nach passenden d3d-device-modi, wie in der sdk von m$


Anmelden zum Antworten