2011-06-12 65 views
2

我在這裏手裏有一個很奇怪的問題。 我正在使用directx 11來製作我自己的遊戲框架/引擎,它一直工作得很好,直到我試圖實現平截頭體剔除,這給了我非常奇怪的幀率問題。DirectX 11 SwapChain ::目前問題

我已經簡化了這個問題,所以它發生了,沒有我做任何截錐體剔除。現在我的屏幕上已經渲染了250個模型,調試時的幀數爲70幀。我已經做到了,如果我按住按鈕H,它會跳過我的模型在我的應用程序::渲染中的渲染,但是如果我這樣做,然後再放開按鈕,我的幀速率將在大多數時間上升到40左右甚至大約4 fps。分析顯示我是SwapChain ::目前突然間需要更長的時間。

在發佈它是同樣的問題,這隻會發生,如果我有調試器順便說一句。我無法親自理解這一個。

嘗試重建和重新啓動。

我現在的功能:

m_pSwapChain->Present(0, 0); 

我的申請::渲染功能:

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

這是我分析我的停止模式,以按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 

當我按下H一秒鐘後,釋放它,所以模型再次呈現:

[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 

我也試過,而不是不渲染我的模型,當我按H,我創建了一個新的模式,當我按下C鍵具有相同的效果。因此,如果在運行期間呈現的模型數量發生任何變化,我的幀速率會變得瘋狂。

這不會發生,如果我有fraps運行(要捕獲的行爲,所以你可以看到它)。 Duno如果這是任何事情的線索。

固定!請看下面的評論

+0

問題解決了,我應該早點想到這個,FML。 現在工作正常,當我升級我的司機到11天前出來(我已經升級他們只是1-2個月前上次)。現在工作正常,fpsdrops也在其他遊戲中消失。 – Nsanden 2011-06-12 16:20:45

+0

您可以自行發佈答案並將其設置爲解決方案。 – 2011-06-12 16:23:57

+0

謝謝,但直到8小時後我才提出這個問題,因爲我對這個網站很陌生。 – Nsanden 2011-06-12 17:01:07

回答

1

最後,我可以回答我的問題(必須等待8小時)

問題解決了,我早該想到這裏越早,FML。現在,當我將驅動程序升級到11天前發佈的驅動程序時(我在上次1-2個月前升級它們),現在工作正常。現在工作正常,fpsdrops已在其他遊戲中消失