Question

J'ai tout à fait le problème bizarre à ma main ici. J'utilise directx 11 pour faire mon propre cadre de jeu / moteur et il a bien fonctionné jusqu'à ce que j'ai essayé de mettre en œuvre culling qui m'a donné frustum des problèmes de framerate vraiment bizarre.

J'ai simplifed le problème un peu il se passe sans me faire du culling tronc de cône. En ce moment j'ai 250 modèles rendus sur mon écran, 70 images par seconde en debug. Je l'ai fait pour que si je tiens le bouton H, il saute le rendu de mes modèles dans ma demande :: Render, mais si je le fais, puis relâchez le bouton à nouveau, mon framerate est en tête autour de 40 après, la plupart du temps autour de 4 images par seconde même. Le profilage me montre c'est SwapChain :: Présent que tout d'un coup plus long chemin prend du temps, alors il devrait jamais.

Dans la version, il est le même problème, cela se produit que si je suis le débogueur attaché btw. Je ne peux pas vraiment comprendre cela moi-même.

J'ai essayé la reconstruction et le redémarrage.

ma fonction actuelle:

m_pSwapChain->Present( 0, 0);

Ma fonction Application :: Rendu:

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

Voici comment mon apparence de profilage avant d'arrêter mes modèles à rendre en appuyant sur 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

Après avoir appuyé sur H pour une seconde puis libéré si les modèles sont rendus à nouveau:

[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

J'ai aussi essayé, au lieu de ne pas rendre mes modèles quand je presse H, je crée un nouveau modèle quand je presse C qui a le même effet. Donc, si le nombre de modèles rendus changements de quelque façon que pendant l'exécution de mon framerate devient fou.

Cela ne se produit pas si j'ai fraps en cours d'exécution (allait capturer le comportement pour que vous puissiez le voir). Duno si c'est un indice de quoi que ce soit.

FIXES! Regardez commentaire ci-dessous

Était-ce utile?

La solution

Enfin je peux répondre à ma propre question (dû attendre 8 heures)

Le problème est résolu, je l'ai pensé à cela plus tôt, FML. Fonctionne très bien maintenant quand je mis à jour mes pilotes à ceux qui sont sortis il y a 11 jours (je les ai mis à jour il y a à peine 1-2 mois dernier). Fonctionne très bien maintenant, a fpsdrops disapeared dans d'autres jeux aussi bien

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top