Domanda

Non ho abbastanza il problema strano la mia mano qui. Sto usando le DirectX 11 per rendere il mio quadro di gioco / motore e ha funzionato bene fino a quando ho provato a implementare tronco di abbattimento che mi ha dato problemi di framerate davvero strano.

Ho simplifed il problema un po 'così accade senza di me fare alcun abbattimento tronco di cono. In questo momento ho 250 modelli resi sul mio schermo, 70 fps in debug. Ho fatto in modo che se tengo nel tasto H salta il rendering dei miei modelli nella mia applicazione :: Render ma se faccio questo e poi lasciare andare il tasto ancora una volta, il mio framerate è il massimo di circa 40 successiva il più delle volte circa 4 fps ancora. Profiling spettacoli me è SwapChain :: attuali che tutto ad un tratto takes tempo modo più allora mai dovrebbe.

In uscita è lo stesso problema, questo accade solo se ho ottenuto il debugger btw. Non posso davvero capire questo fuori me stesso.

ricostruzione Provato e riavviare.

la mia funzione attuale:

m_pSwapChain->Present( 0, 0);

Il mio Application :: Render funzione:

void CApplication::Render() const
{
    CD3D::Instance()->BeginRender();

    //Render 3d
    if ( !CInputSystem::Instance()->IsKeyPressed('H'))
    {
        std::vector<CPlanet*>::const_iterator it;
        for (it = m_Planets.begin(); it != m_Planets.end(); ++it)
        {
            (*it)->Render();
        }
    }
    // Render 2d
    m_pScreenSprite->Render();

    CTextSystem::Instance()->Render2D();
    CD3D::Instance()->EndRender();
}

Questo è come il mio aspetto profilazione prima di fermarsi miei modelli per essere resi premendo H:

[Profiler] BeginRender: 2.830984218768823e-005
[Profiler] Models::Render: 1.4456089627755692e-005
[Profiler] Text|Sprite ::Render: 0.00015811348030357787
[Profiler] EndRender: 0.00018853150222864715
[Profiler] CApplication::Render(): 0.00067612335863149022

Dopo che ho premuto H per un secondo poi rilasciato in modo i modelli vengono resi ancora:

[Profiler] BeginRender: 2.4996988314660883e-005
[Profiler] Models::Render: 0.0091422720154198285
[Profiler] Text|Sprite ::Render: 0.00011655222262378027
[Profiler] EndRender: 0.2590757137694254
[Profiler] CApplication::Render(): 0.26870557764124803

Ho anche provato, invece di non rendere miei modelli Quando premo H, creo un nuovo modello quando si preme C, che ha lo stesso effetto. Quindi, se il numero di modelli cambiamenti in alcun modo resi durante il runtime il mio framerate impazzisce.

Questo non accade se ho fraps esecuzione (stava per catturare il comportamento in modo che si poteva vedere). Duno Se questo è un indizio per nulla.

fissi! Guardate commento qui sotto

È stato utile?

Soluzione

Finalmente posso rispondere alla mia domanda (dovuto aspettare 8 ore)

Problema risolto, avrei dovuto pensato a questo prima, FML. Funziona bene adesso quando ho aggiornato i miei driver a quelli che è venuto fuori 11 giorni fa (li ho aggiornato appena 1-2 mesi fa l'ultima volta). Funziona bene ora, fpsdrops ha disapeared in altri giochi come pure

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top