我在這裏手裏有一個很奇怪的問題。 我正在使用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如果這是任何事情的線索。
固定!請看下面的評論
問題解決了,我應該早點想到這個,FML。 現在工作正常,當我升級我的司機到11天前出來(我已經升級他們只是1-2個月前上次)。現在工作正常,fpsdrops也在其他遊戲中消失。 – Nsanden 2011-06-12 16:20:45
您可以自行發佈答案並將其設置爲解決方案。 – 2011-06-12 16:23:57
謝謝,但直到8小時後我才提出這個問題,因爲我對這個網站很陌生。 – Nsanden 2011-06-12 17:01:07