DirectX 11 SwapChain :: Present kérdés

szavazat
2

Nekem elég furcsa probléma a kezem itt. Én a DirectX 11, hogy a saját játék keret / motor, és azt működött, amíg megpróbáltam végrehajtani csonka selejtezés, amely adott nekem nagyon furcsa framerate problémák.

Már leegyszerűsített a probléma egy kicsit, így ez történik nélkülem csinál minden csonka selejtezése. Most már 250 modellek leképezni a képernyő, 70 fps hibakeresés. Csináltam úgy, hogy ha én tartsa a gombot H kihagyja a renderelés én modell az én Application :: Render, de ha én ezt majd engedje el a gombot, akkor én framerate felsők mintegy 40 utána a legtöbb alkalommal mintegy 4 fps még. Profilalkotás megmutatja azt a SwapChain :: Present hogy hirtelen vesz módon hosszabb ideig, akkor elveszett volna.

A Release ez ugyanaz a probléma, ez csak akkor történik meg, ha megvan a hibakereső csatlakoztatva btw. Nem igazán tudom kitalálni ezt ki magam.

Kipróbált újjáépítése és újraindítás.

én jelenlegi funkcióját:

m_pSwapChain->Present( 0, 0);

My Application :: Render funkció:

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

Így én profilalkotás néz leállítása előtt az én modellek által nyújtott H gomb megnyomásával:

[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

Miután már nyomni H a második, majd elengedte, így a modellek ne váljanak újra:

[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

Én is próbáltam, ahelyett, hogy nem teszi én modellek, amikor megnyomom a H, I hozzon létre egy új modellt mikor nyomja meg a C, amellyel ugyanez a hatás. Tehát, ha a modellek száma tette változások semmilyen módon futás közben én framerate megőrül.

Ez nem történhet meg, ha nekem van Fraps futó (ment, hogy elfog a viselkedését, így látni lehetett). Duno ha ez egy nyom semmit.

RÖGZÍTETT! Nézd megjegyzést alább

A kérdést 12/06/2011 13:20
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
1

Végül én is válaszolni a saját kérdését (kellett várni 8 óra)

Probléma megoldva, azt kellett volna gondolat, hogy ezt előbb, FML. Működik most, amikor én frissítettem a vezetők is, hogy jött ki 11 nappal ezelőtt (én már frissített őket, csak 1-2 hónappal ezelőtt utoljára). Jól működik most, fpsdrops már disapeared más játékokat is

Válaszolt 13/06/2011 02:50
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more