我在这里手里有一个很奇怪的问题。 我正在使用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