2011-06-12 63 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已在其他游戏中消失